從雪花中讀取數據不正確

在時區設置不正確的情況下,從“雪花”上讀取數據會出錯。

寫的DD沙瑪

最後發布日期:2022年5月24日

問題

您有一個作業正在使用Apache Spark從Snowflake表中讀取數據,但出現在Dataframe中的時間數據不正確。

如果直接在雪花上運行相同的查詢,將返回正確的時間數據。

導致

時區設置錯誤。處理步驟Databricks集群的時區值與Snowflake的時區值不匹配可能導致不正確的時間值,如Snowflake的使用時間戳和時區文檔。

解決方案

在“數據庫”中設置時區,在“雪花”中不顯式設置時區。

選項1:在“數據庫”中為SQL語句設置時區

  1. 打開Databricks工作區。
  2. 選擇集群
  3. 選擇需要修改的集群。
  4. 選擇編輯
  5. 選擇高級選項
  6. 輸入spark.sql.session.timeZone <時區>火花配置字段。
  7. 選擇確認

選項2:使用init腳本設置所有節點的時區

  1. 使用以下命令創建init腳本:
    %python dbutils.fs.put("/databricks/scripts/set_timezone.sh",""" #!/bin/bash timedatectl set timezone America/ los - angeles """, True)
  2. 驗證init腳本的完整路徑。
    %python %fs ls /databricks/scripts/set_timezone.sh . zip
  3. 打開Databricks工作區。
  4. 選擇集群
  5. 選擇需要修改的集群。
  6. 選擇編輯
  7. 選擇高級選項
  8. 選擇Init腳本
  9. 進入Init腳本路徑
  10. 選擇添加
  11. 選擇確認
這篇文章有用嗎?