to_date无法在Spark 3.0中解析日期 [英] to_date fails to parse date in Spark 3.0

查看:186
本文介绍了to_date无法在Spark 3.0中解析日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 to_date()解析日期,但出现以下异常.

I am trying to parse date using to_date() but I get the following exception.

SparkUpgradeException:由于Spark 3.0的升级,您可能会得到不同的结果:无法在新的解析器中解析"2010年12月1日8:26".您可以将spark.sql.legacy.timeParserPolicy设置为LEGACY以恢复Spark 3.0之前的行为,或者将其设置为CORRECTED并将其视为无效的日期时间字符串.

SparkUpgradeException: You may get a different result due to the upgrading of Spark 3.0: Fail to parse '12/1/2010 8:26' in the new parser. You can set spark.sql.legacy.timeParserPolicy to LEGACY to restore the behavior before Spark 3.0, or set to CORRECTED and treat it as an invalid datetime string.

该异常表明我应该使用旧的时间解析器,对于初学者来说,我不知道如何将其设置为旧版".

The exception suggests I should use a legacy Time Parser, for starter I don't know how to set it to Legacy.

这是我的实现方式

dfWithDate = df.withColumn("date", to_date(col("InvoiceDate"), "MM/dd/yyyy"))

我的日期采用以下格式

+--------------+
|   InvoiceDate|
+--------------+
|12/1/2010 8:26|
|12/1/2010 8:26|
|12/1/2010 8:26|
|12/1/2010 8:26|
|12/1/2010 8:26|

推荐答案

spark.sql("set spark.sql.legacy.timeParserPolicy=LEGACY")
df.withColumn("date", to_date(col("InvoiceDate"), "MM/dd/yyyy")).show()


+--------------+----------+
|   InvoiceDate|      date|
+--------------+----------+
|12/1/2010 8:26|2010-12-01|
+--------------+----------+

# in above code spark refers SparkSession

这篇关于to_date无法在Spark 3.0中解析日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆