問題
您有一個作業正在使用Apache Spark從Snowflake表中讀取數據,但出現在Dataframe中的時間數據不正確。
如果直接在雪花上運行相同的查詢,將返回正確的時間數據。
導致
時區設置錯誤。處理步驟Databricks集群的時區值與Snowflake的時區值不匹配可能導致不正確的時間值,如Snowflake的使用時間戳和時區文檔。
解決方案
在“數據庫”中設置時區,在“雪花”中不顯式設置時區。
選項1:在“數據庫”中為SQL語句設置時區
- 打開Databricks工作區。
- 選擇集群.
- 選擇需要修改的集群。
- 選擇編輯.
- 選擇高級選項.
- 輸入spark.sql.session.timeZone <時區>在火花配置字段。
- 選擇確認.
選項2:使用init腳本設置所有節點的時區
- 使用以下命令創建init腳本:
%python dbutils.fs.put("/databricks/scripts/set_timezone.sh",""" #!/bin/bash timedatectl set timezone America/ los - angeles """, True)
- 驗證init腳本的完整路徑。
%python %fs ls /databricks/scripts/set_timezone.sh . zip
- 打開Databricks工作區。
- 選擇集群.
- 選擇需要修改的集群。
- 選擇編輯.
- 選擇高級選項.
- 選擇Init腳本.
- 進入Init腳本路徑.
- 選擇添加.
- 選擇確認.