Python pyspark中未定义的函数UDF?
我在Dataframe中调用了一个UDF,但是我得到了未定义的UDFPython 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
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注册得到刷新