可以在udf中使用pyspark.sql.function吗?

时间:2017-03-09 09:47:35

标签: python sql apache-spark pyspark user-defined-functions

我定义了一个像

这样的函数
getDate = udf(lambda x : to_date(x))

当我在

中使用它时
df.select(getDate("time")).show()

我见过

File ".../pyspark/sql/functions.py", in to_date
return Column(sc._jvm.functions.to_date(_to_java_column(col)))
AttributeError: 'NoneType' object has no attribute '_jvm'

这是否意味着我不能在我自己的udf中使用pyspark.sql。函数?

这不是一个特定的问题,我想知道为什么会这样。

2 个答案:

答案 0 :(得分:5)

来自pyspark.sql.functions的函数是JVM函数的包装器,旨在在pyspark.sql.Column上运行。你不能使用这些:

  • 转换本地Python对象。他们会Column并返回Column
  • 它们不能用于工作者,因为没有可以评估它们的上下文。

答案 1 :(得分:0)

sc sc._jvm 'NoneType' object has no attribute '_jvm'视为错误似乎有问题:udf

此处sc为NoneType。

并且无需为此编写import pyspark.sql.functions as F df.select(F.to_date(df.time)).show() ,您可以直接使用: -

#AboutUs > div {
 text-align: center;
}