我已经尝试使用lambda函数的参数spark UDF并注册它 . 但我怎么能创建没有参数和注册商的udf它我试过这个我的示例代码将显示当前时间
from datetime import datetime
from pyspark.sql.functions import udf
def getTime():
timevalue=datetime.now()
return timevalue
udfGateTime=udf(getTime,TimestampType())
但是pyspark正在展示
NameError: name 'TimestampType' is not defined
这可能意味着我的UDF没有注册我对这种格式很满意
spark.udf.register('GATE_TIME', lambda():getTime(), TimestampType())
但lambda函数是否采用空参数? . 虽然我没有尝试,但我有点困惑,请帮助我 . 如何编写注册此getTime()函数的代码谢谢
3 回答
lambda
表达式可以是无效的 . 你只是使用不正确的语法:lambda
表达式没有什么特别之处 . 您可以直接使用getTime
:udf
. Spark提供了开箱即用的所需功能:要么
错误“
NameError: name 'TimestampType' is not defined
”似乎是由于缺少:有关
TimeStampType
的更多信息,请参阅此答案https://stackoverflow.com/a/30992905/5088142我在这里做了一些调整,它现在运行良好
而不是当前时间任何值都可以通过它将在这里给出当前日期时间