Python pyspark中未定义的函数UDF?

Python pyspark中未定义的函数UDF?,python,pyspark,user-defined-functions,Python,Pyspark,User Defined Functions,我在Dataframe中调用了一个UDF,但是我得到了未定义的UDF global ac ac = sc.accumulator(0) def incrementAC(): ac.add(1) return str(ac.value) df = sc.parallelize([('Java',90),('Scala',95),('Spark',92)]).toDF(["language","rank"]) df.withColumn("lang_and_rank", expr("c

我在Dataframe中调用了一个UDF,但是我得到了未定义的UDF

global ac
ac = sc.accumulator(0)

def incrementAC():
  ac.add(1)
  return str(ac.value)

df = sc.parallelize([('Java',90),('Scala',95),('Spark',92)]).toDF(["language","rank"])

df.withColumn("lang_and_rank", expr("concat(language,'blah')")).show()

+--------+----+-------------+
|language|rank|lang_and_rank|
+--------+----+-------------+
|    Java|  90|     Javablah|
|   Scala|  95|    Scalablah|
|   Spark|  92|    Sparkblah|
+--------+----+-------------+

myudf = udf(incrementAC,StringType())
df.withColumn("lang_and_rank", expr("concat(language,myudf())")).show()

.utils.AnalysisException: u'undefined function myudf;'
与expr一起使用的函数必须注册:

spark.udf.register("incrementAC", incrementAC)
转换中使用的累加器也不可靠。

必须注册与expr一起使用的函数:

spark.udf.register("incrementAC", incrementAC)
转换中使用的累加器也不可靠。

希望这有帮助

从pyspark.sql.functions导入udf、expr、concat、col 从pyspark.sql.types导入StringType ac=sc.累加器0 def增量AC: ac.add1 回程线 样本数据 df=sc.parallelize[Java',90,'Scala',95,'Spark',92].toDF[language,rank] 方法1:

方法2:

输出为:

+--------+----+-------------+
|language|rank|lang_and_rank|
+--------+----+-------------+
|    Java|  90|        Java1|
|   Scala|  95|       Scala1|
|   Spark|  92|       Spark2|
+--------+----+-------------+
希望这有帮助

从pyspark.sql.functions导入udf、expr、concat、col 从pyspark.sql.types导入StringType ac=sc.累加器0 def增量AC: ac.add1 回程线 样本数据 df=sc.parallelize[Java',90,'Scala',95,'Spark',92].toDF[language,rank] 方法1:

方法2:

输出为:

+--------+----+-------------+
|language|rank|lang_and_rank|
+--------+----+-------------+
|    Java|  90|        Java1|
|   Scala|  95|       Scala1|
|   Spark|  92|       Spark2|
+--------+----+-------------+

我在重命名Java文件/函数后遇到了这个问题。我重新启动了Spark服务器并复制了JAR文件,但在尝试使用新的JAR文件运行当前正在运行的Jupyter笔记本时,出现了未定义的函数UDF错误


解决办法是重新启动我的Jupyter笔记本。我怀疑运行的Python环境中的某些部分没有通过新的UDF注册得到刷新。

我在重命名Java文件/函数后遇到了这个问题。我重新启动了Spark服务器并复制了JAR文件,但在尝试使用新的JAR文件运行当前正在运行的Jupyter笔记本时,出现了未定义的函数UDF错误

解决办法是重新启动我的Jupyter笔记本。我怀疑运行Python环境中的某些部分没有通过新的UDF注册得到刷新