如何在pyspark的udf中传入数据参数

如何在pyspark的udf中传入数据参数

  • 问题定义
  • 解决方案

问题定义

我希望在pyspark中使用withColumn函数对dataframe的某一列进行udf操作,需要传入一个字典,形如:

def func_is_holiday(holiday_dict,date):
	return holiday_dict[date]

df = df.withColumn("is_holiday", func_is_holiday(holiday_dict,df['date'] )

但是结果报错显示

解决方案

def func_is_holiday(holiday_dict):
    return udf( lambda x: holiday_dict[x])
    
df = df.withColumn("is_holiday", func_is_holiday(holiday_dict)(df['date']) )

使用闭包构造一个名为func_is_holiday(holiday_dict)的函数即可。

解决方案参考了:参考方案

你可能感兴趣的:(spark)