簡體   English   中英

Spark SQL 更改日期格式

[英]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:結果截圖

  • 火花:3.1.2
  • Scala:2.12.10
  • 在 Zeppelin 0.9.0 上運行

截屏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM