【问题标题】:Can pyspark.sql.function be used in udf?可以在udf中使用pyspark.sql.function吗?
【发布时间】:2017-07-30 05:38:13
【问题描述】:

我定义了一个类似

的函数
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.function?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      scsc._jvm:'NoneType' object has no attribute '_jvm' 一样,查看错误似乎有问题

      这里的 sc 是 NoneType。

      而且不用写udf,可以直接使用:-

      import pyspark.sql.functions as F
      df.select(F.to_date(df.time)).show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 1970-01-01
        • 2021-12-28
        相关资源
        最近更新 更多