【发布时间】:2019-01-30 20:35:30
【问题描述】:
我编写了一个 UDF 函数,它接收一列,然后将字符串解析为该列中所有值的日期时间格式字符串。
但是,当我运行 spark 作业时,我的函数抛出以下错误:
strptime() argument 1 must be string, not Column
Here is my UDF and python function
dateformat = udf(lambda x: datetimeformat(x), StringType())
def datetimeformat(x):
return datetime.strptime(x, '%Y%m%d %H:%M:%S.%f').strftime('%Y-%m-%d %H:%M:%S.%f')
How the udf is called
newdf=newdf.withColumn("date",dateformat(newdf["date"]))
【问题讨论】:
-
您需要先定义
datetimeformat,然后再定义dateformat。换个顺序就行了顺便说一句,有一个函数pyspark.sql.functions.date_format可能对你有用。 -
@pault 我进行了订购更改,但错误仍然存在。该函数能够解析格式如下的原始字符串:'20180321 12:39:42.595000' 并转换为时间戳?
标签: python datetime pyspark user-defined-functions