我是PySpark新手,我试图运行以下代码,用假名称替换name
列。
# !pip install Faker
from faker import Faker
from functools import partial
def synthetic_column(string, faker_function):
return faker_function()
partial_func = partial(synthetic_column, faker_function = Faker().first_name)
spark_df = spark_df.withColumn('name',partial_func(col('name')))
display(spark_df)
产率AssertionError: col should be Column
我在整数类型列上运行相同的代码,但是我没有得到这个AssertionError
,
为什么会发生这种情况?我已经尝试过提到的here解决方案,但它们没有帮助。
请指点。
发布于 2021-08-26 13:02:25
您不能将python函数直接应用于数据访问。您需要将其转换为UDF。但是,在您的示例中,您可能还需要在所有节点上安装Faker,因为UDF是在本地executor env上执行的,并且它们需要能够在本地执行导入。
但是一旦安装好,您的代码只需要导入udf
并将其应用于faker函数。
from pyspark.sql.functions import udf
partial_func = udf(Faker().first_name)
df = df.withColumn("Name", partial_func())
https://stackoverflow.com/questions/68936705
复制相似问题