簡體   English   中英

我們如何使用 jdbc 驅動程序 Z572D4E421E5E06B9BC111D82EZ 服務器從 mysql 服務器讀取 spark scala 中的無效日期列

[英]How can we read invalid date column in spark scala from mysql server using jdbc driver url (connection)

從 mysql 服務器讀取此列時出現錯誤

ID 日期
1 0000-00-00
2 0000-00-01

在上述數據集中我們可以使用 mysql 服務器處理 0000-00-00 附加參數 zeroDateTimeBehavior=convertToNull

但我不知道如何處理這種類型的日期 0000-00-01

幫幫我我收到的錯誤消息

Exception in User Class: org.apache.spark.SparkException : Job aborted due to stage failure: Task 0 in stage 6.0 failed 4 times, most recent failure: Lost task 0.3 in stage 6.0 (TID 11) (10.100.4.111 executor 1): java.sql.SQLException: YEAR

我正在使用這個

val a = "jdbc:mysql://<host_name>:3306/<database_name>?zeroDateTimeBehavior=convertToNull"

val mysqlServerDF = sparkSession.read.format("jdbc")
                .option("url", a)
                .option("query", sql)
                .option("user",jdbcUserName)
                .option("password", jdbcPassword)
                .load()

sql 是一個 sql 查詢示例“從表中選擇 *”

如果無法在數據庫中修復此類日期,我認為最好的辦法是直接在sql查詢中處理它。 例如,我們可以根據文檔比較有效日期范圍,即“1000-01-01”到“9999-12-31”:

val sql = """
  select 
    id, 
    case 
      when 
        not cast(date as char(10)) 
        between '1000-01-02' and '9999-12-30' 
      then 
        null 
      else 
        date 
    end 
  from table1"""

val mysqlServerDF = sparkSession.read.format("jdbc")
                .option("url", a)
                .option("query", sql)
                .option("user",jdbcUserName)
                .option("password", jdbcPassword)
                .load()

暫無
暫無

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

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