我有一个在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
一起使用的函数:另外,从转换中使用的
accumualtors
也不可靠。在希望这有帮助!在
方法1:
^{pr2}$方法2:
输出为:
相关问题 更多 >
编程相关推荐