從雪花讀取數據時,數據不正確

問題

有一個作業正在使用Apache Spark從Snowflake表中讀取數據,但數據幀中顯示的時間數據不正確。

如果您直接在Snowflake上運行相同的查詢,則會返回正確的時間數據。

導致

時區值設置不正確。Databricks集群的時區值與雪花的時區值不匹配會導致不正確的時間值,如雪花的使用時間戳和時區文檔。

解決方案

在Databricks中設置時區,在Snowflake中不要顯式設置時區。

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

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

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

  1. 使用以下命令創建初始化腳本:
dbutilsfs“磚/腳本/ set_timezone.sh”"""# !/bin/bash美國/ Los_Angeles timedatectl set-timezone"""真正的
  1. 驗證init腳本的完整路徑。
fsls//腳本/set_timezone上海
  1. 打開Databricks工作區。
  2. 選擇集群
  3. 選擇需要修改的集群。
  4. 選擇編輯
  5. 選擇高級選項
  6. 選擇Init腳本
  7. 進入Init腳本路徑
  8. 選擇添加
  9. 選擇確認