0

我在Azure上的Jupyter中使用PySpark。我試圖在數據框上使用UDF進行測試,但是UDF未執行。PySpark:UDF未在數據框上執行

我的數據幀創建:

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

我已經證實了這一數據框填充了100行。在下一個單元格中,我嘗試執行一個簡單的udf。

def iterateMeals(user): 
    print user 

users.foreach(iterateMeals) 

這不產生輸出。我本來期望數據框中的每個條目都已經打印完畢。但是,如果我只是嘗試iterateMeals('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:同時呼籲o461發生錯誤。 getnewargs。跟蹤: py4j.Py4JException:方法getnewargs([])不存在

有人能解釋我在那裏出了問題?我將需要在此應用程序的數據框的.foreach內執行udfs。

回答