[英]Spark SQL change date format
我正在嘗試將數據的日期格式從 (11 20, 2014) 更改為 2014-11-20。 我試過這個:
df.withColumn("newDate", to_date(col("reviewTime"),("mm dd, yyyy")))
因為帶有個位數的日子顯示為 1,2,8 而不是 01,02,08 我收到了這條消息:
SparkUpgradeException: 升級Spark 3.0可能會得到不同的結果: Fail to parse '09 1, 2014' in the new parser. 您可以將 spark.sql.legacy.timeParserPolicy 設置為 LEGACY 以恢復 Spark 3.0 之前的行為,或者設置為 CORRECTED 並將其視為無效的日期時間字符串。 原因:DateTimeParseException:無法在索引 3 處解析文本 '09 1, 2014'
有沒有辦法來解決這個問題?
謝謝!
您的一些數據日期行是用舊的 spark 版本編寫的。 您應該添加您的火花配置。
spark.sql.parquet.int96RebaseModeInRead = "LEGACY"
或者
spark.sql.parquet.int96RebaseModeInRead = "CORECTED"
根據您的要求,他們向您解釋了您錯誤中這兩個選項之間的區別。
可以使用格式(M d, yyyy)
來處理
示例(scala 火花):
Seq(
"(11 20, 2014)",
"(1 3, 2013)",
"(2 20, 2012)",
"(4 22, 2014)"
).toDF("ugly_date")
.withColumn("date", to_date($"ugly_date", "(M d, yyyy)"))
.show(false)
Output:
+-------------+----------+
|ugly_date |date |
+-------------+----------+
|(11 20, 2014)|2014-11-20|
|(1 3, 2013) |2013-01-03|
|(2 20, 2012) |2012-02-20|
|(4 22, 2014) |2014-04-22|
+-------------+----------+
有關日期時間模式的更多信息,請參閱https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html
UPD:結果截圖
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.