我有一个格式为“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
32条答案
按热度按时间ma8fv8wu1#
---------+
|mydate |日期时间|
+
1u4esq0p2#
---------+
|mydate |日期时间| legacydatetime|
+
xoshrz7s3#
---------+
yzckvree4#
---------+
|mydate |日期时间|
+
t1qtbnec5#
---------+
|格林尼治标准时间2019年5月24日星期五00:00:00 | 2019-05-24 01:00:00 | 2019-05-24 01:00:00|
+
xggvc2p66#
---------+
bakd9h0s7#
--------+
9wbgstp78#
--------+
trnvg8h39#
--------+
gt0wga4j10#
--------+
xkrw2x1b11#
---------+
|2019年5月24日星期五00:00:00 gmt | 2019-05-24 01:00:00|
+
eqoofvh912#
--------+
z6psavjg13#
--------+
mpgws1up14#
--------+
u0njafvf15#
---------+