从spark 2.0到3.0的字符串到日期的迁移导致无法识别datetimeformatter中的“eee-mmm-dd hh:mm:ss-zzz-yyyy”模式

nfs0ujit  于 2021-05-29  发布在  Spark
关注(0)|答案(32)|浏览(468)

我有一个格式为“fri may 24 00:00:00 bst 2019”的源代码中的日期字符串,我会将其转换为日期,并将其存储在Dataframe中为“2019-05-24”,使用类似于spark 2.0下适用于我的示例的代码

from pyspark.sql.functions import to_date, unix_timestamp, from_unixtime
df = spark.createDataFrame([("Fri May 24 00:00:00 BST 2019",)], ['date_str'])
df2 = df.select('date_str', to_date(from_unixtime(unix_timestamp('date_str', 'EEE MMM dd HH:mm:ss zzz yyyy'))).alias('date'))
df2.show(1, False)

在我的沙盒环境中,我已经更新到spark3.0,现在上面的代码出现了以下错误,在3.0中有没有新的方法来将字符串转换成日期
:org.apache.spark.sparkupgradeexception:由于spark 3.0的升级,您可能会得到不同的结果:无法识别datetimeformatter中的“eee-mmm-dd-hh:mm:ss-zzz-yyyy”模式。
您可以将spark.sql.legacy.timeparserpolicy设置为legacy,以恢复spark 3.0之前的行为。
您可以使用中的指南形成有效的日期时间模式https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html

ma8fv8wu

ma8fv8wu1#

---------+
|mydate |日期时间|
+

1u4esq0p

1u4esq0p2#

---------+
|mydate |日期时间| legacydatetime|
+

yzckvree

yzckvree4#

---------+
|mydate |日期时间|
+

t1qtbnec

t1qtbnec5#

---------+
|格林尼治标准时间2019年5月24日星期五00:00:00 | 2019-05-24 01:00:00 | 2019-05-24 01:00:00|
+

xkrw2x1b

xkrw2x1b11#

---------+
|2019年5月24日星期五00:00:00 gmt | 2019-05-24 01:00:00|
+

相关问题