Это должно сработать.
Сначала создайте временный пример кадра данных:
df = spark.createDataFrame([
(0, "This is Spark"),
(1, "I wish Java could use case classes"),
(2, "Data science is cool"),
(3, "This is aSA")
], ["id", "words"])
df.show()
Вывод
+---+--------------------+
| id| words|
+---+--------------------+
| 0| This is Spark|
| 1|I wish Java could...|
| 2|Data science is ...|
| 3| This is aSA|
+---+--------------------+
Теперь, чтобы написать UDF потому что те функции, которые вы используете, не могут быть непосредственно выполнены для типа столбца, и вы получите Column object not callable error
Решение
from pyspark.sql.functions import udf
def ascii_ignore(x):
return x.encode('ascii', 'ignore').decode('ascii')
ascii_udf = udf(ascii_ignore)
df.withColumn("foo", ascii_udf('words')).show()
Выход
+---+--------------------+--------------------+
| id| words| foo|
+---+--------------------+--------------------+
| 0| This is Spark| This is Spark|
| 1|I wish Java could...|I wish Java could...|
| 2|Data science is ...|Data science is ...|
| 3| This is aSA| This is aSA|
+---+--------------------+--------------------+