我已经尝试使用 lambda 函数带参数的 Spark UDF 并注册它。但是我怎样才能创建没有参数和注册器的 udf 我已经尝试过这个我的示例代码将期望显示当前时间
从日期时间导入日期时间
从 pyspark.sql.functions 导入 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() 函数的代码?
-
lambda
表达式可以为空。您只是使用了不正确的语法:
spark.udf.register('GATE_TIME', lambda: getTime(), TimestampType())
-
没有什么特别的lambda
Spark 上下文中的表达式。您可以使用getTime
直接地:
spark.udf.register('GetTime', getTime, TimestampType())
-
没有必要低效udf
根本不。 Spark 提供了开箱即用的所需功能:
spark.sql("SELECT current_timestamp()")
or
from pyspark.sql.functions import current_timestamp
spark.range(0, 2).select(current_timestamp())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)