ValueError: time data '00.00.00' pyspark

ValueError: time data '00.00.00' pyspark

我正在以 "mm.dd.yy" 格式从 pyspark datafame 获取日期值。我想把它转换成 "mm.dd.yyyy" 格式。

我尝试编写一个 UDF,但日期时间函数抛出错误。

from pyspark.sql.types import StringType
from pyspark.sql.functions import udf
import datetime

def change_date(date_string):
  dateConv = datetime.datetime.strptime(date_string,'%d.%m.%y')
  dt_str = datetime.datetime.strftime(dateConv,'%d.%m.%Y')

  return dt_str

date_udf = udf(lambda date: change_date(date),  StringType())
display(filterEmplyValues.withColumn("date", date_udf(col("date"))))

我收到的错误是: ` SparkException:作业因阶段失败而中止:阶段 302.0 中的任务 23 失败了 4 次,最近的失败:阶段 302.0 中丢失任务 23.3(TID 18078、10.139.64.15,执行者 71):org.apache.spark.api.python.PythonException:回溯(最近的最后调用): 主进程中的文件“/databricks/spark/python/pyspark/worker.py”,第 480 行()

ValueError:时间数据“00.00.00”与格式“%d.%m.%y”不匹配 `

感谢您的帮助。

您可以在没有 UDF 的情况下使用 spark 内置函数 to_datedate_format

df.show()

+--------+
|    date|
+--------+
|08.27.18|
+--------+

from pyspark.sql import functions as F
df.withColumn("date", F.date_format(F.to_date("date", "MM.dd.yy"),"MM.dd.yyyy")).show()

+----------+
|      date|
+----------+
|08.27.2018|
+----------+