【问题标题】:AssertionError: col should be Column, on an type 'str' columnAssertionError: col 应该是 Column,在类型 'str' 列上
【发布时间】:2021-08-26 10:18:37
【问题描述】:

我是 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 提到的解决方案,但它们没有帮助。

请指教。

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案1】:

    您不能将 python 函数直接应用于您的数据框。您需要将其转换为 UDF。但是,在您的情况下,您可能还需要在所有节点上安装 Faker,因为 UDF 是在本地执行程序 env 上执行的,并且它们需要能够在本地执行导入。

    但是一旦安装,你的代码只需要导入udf 并将它应用到你的faker函数中

    from pyspark.sql.functions import udf
    
    partial_func = udf(Faker().first_name)
    
    df = df.withColumn("Name", partial_func())
    

    【讨论】:

      猜你喜欢
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2014-08-15
      • 2020-01-18
      • 2019-04-08
      • 2014-07-05
      相关资源
      最近更新 更多