PySpark:UDF没有在datafram上执行

2024-06-02 08:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在天蓝的Jupyter使用PySpark。我试图在数据帧上使用UDF进行测试,但是UDF没有执行。在

我的数据帧由以下人员创建:

users = sqlContext.sql("SELECT DISTINCT userid FROM FoodDiaryData")

我已经确认这个数据框填充了100行。在下一个单元中,我尝试执行一个简单的udf。在

^{pr2}$

这不会产生任何输出。我本以为数据帧中的每个条目都已经打印出来了。但是,如果我简单地尝试iterateMeals('test'),它将触发并打印“test”。我还尝试使用pyspark.sql.functions

from pyspark.sql.functions import udf

def iterateMeals(user):
    print user
f_iterateMeals = udf(iterateMeals,LongType())

users.foreach(f_iterateMeals)

当我尝试此操作时,收到以下错误:

Py4JError: An error occurred while calling o461.__getnewargs__. Trace:
py4j.Py4JException: Method __getnewargs__([]) does not exist

有人能解释一下我哪里出错了吗?我需要在这个应用程序的数据帧的.foreach内执行udf。在


Tags: 数据testsql人员jupyterfunctionsuserspyspark
1条回答
网友
1楼 · 发布于 2024-06-02 08:39:06
  1. 您将看不到输出,因为print在工作节点上执行并转到相应的输出。有关完整的解释,请参见Why does foreach not bring anything to the driver program?

  2. foreach操作的是RDD,而不是DataFrameUDFs在此上下文中无效。

相关问题 更多 >