【问题标题】:Pyspark UDF not working, expecting string not columnPyspark UDF 不工作,期望字符串不是列
【发布时间】: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


【解决方案1】:

看不到您的 newdf。我创建了一个临时数据集,如下所示

c:\tmp\f4.csv


dt
20180212 15:10:10.000
20180212 15:10:10.000
20180212 15:10:10.000

代码如下:

from pyspark.sql.functions import *
from pyspark.sql.types import *
from datetime import datetime
schema=StructType([StructField("dt",StringType())])
f1=spark.read.format("csv").schema(schema).option("header","true").option("delimiter","|").load("c:/tmp/f4.csv")
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')



f2=f1.withColumn("date",dateformat(f1["dt"]))
f2.show()

输出

+--------------------+--------------------+
|                  dt|                date|
+--------------------+--------------------+
|20180212 15:10:10...|2018-02-12 15:10:...|
|20180212 15:10:10...|2018-02-12 15:10:...|
|20180212 15:10:10...|2018-02-12 15:10:...|
+--------------------+--------------------+

【讨论】:

  • 感谢您展示此示例。原来我在另一个地方调用了我的python函数,触发了那个错误。
【解决方案2】:

我无法测试,因为我没有可用的 spark 环境,但我认为您只需要编写列的名称而不是列对象:

newdf=newdf.withColumn("date",dateformat("date"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2022-06-12
    • 2020-07-27
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2021-12-13
    相关资源
    最近更新 更多