在Docker容器服務中使用Databricks Repos

使用自定義初始化腳本配置集群,使用Databricks Repos和Docker容器服務。

寫的darshan.bargal

最後發布日期:2022年9月28日

簡介

根據您的用例,您可能需要同時使用Docker容器服務(DCS)和Databricks Repos (AWS|Azure|GCP)同時。DCS在默認情況下不與Databricks Repos一起工作,但是您可以使用自定義init腳本來使用兩者。

如果您沒有安裝init腳本來使用Databricks Repos配置DCS,那麼在嚐試啟動集群時可能會看到一條錯誤消息。當底層文件係統變得不可訪問時,就會發生這種情況。

在沒有初始化腳本的情況下使用repo時,您可能會看到以下錯誤:

py4j。Py4JException:由Python代理引發的異常。返回消息:Traceback(最近一次調用):文件"/databricks/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py",第2442行,in _call_proxy return_value = getattr(self. exe .py)。pool[obj_id], method)(*params) File "/databricks/python_shell/scripts/ . confPythonShellImpl.py", line 935, in initStartingDirectory os.chdir(directory) FileNotFoundError: [Errno 2]沒有這樣的文件或目錄:'/Workspace/Repos//hello_world'

指令

您可以使用本文中的示例init腳本使DCS能夠使用Databricks Repos。

此初始化腳本確保goofy-dbr進程正確運行,確保文件係統仍可訪問。的goofy-dbrprocess是Databricks的內部分支高飛.磚的goofy-dbr添加對Azure數據湖存儲(ADLS)和Azure Blob存儲的支持高飛,以及確保這一點高飛可以在Databricks集群上運行。

創建初始化腳本

  1. 確保有一個目錄來存儲初始化腳本。如果沒有,就創建一個。
    % scala dbutils.fs.mkdirs(“dbfs: /磚/ < init-script-folder > /”)
  2. 創建初始化腳本。
  3. 使用此示例代碼創建名為repo.sh在您的集群上。取代< init腳本>初始化腳本的位置。
    % scala dbutils.fs.put(“dbfs: /磚/ < init-script-folder > /repo.sh", """ #! "/bin/bash set -o xtrace source /databricks/spark/conf/spark-env.shexport WSFS_ENABLE_DEBUG_LOG mkdir -p /Workspace mkdir -p /databricks/data/logs/ nohup /databricks/spark/scripts/fuse/wsfs /Workspace > /databricks/data/logs/wsfs.log 2>&1 & WAIT_TIMEOUT=5 CHECK_INTERVAL=0.1 WAIT_UNTIL=$(($(date +%s) + $WAIT_TIMEOUT)) until mountpoint -q /Workspace || [[$(date +%s) -ge $WAIT_UNTIL]];do sleep $CHECK_INTERVAL done mkdir -p /dbfs nohup /databricks/spark/scripts/fuse/goofys-dbr -f -o allow_other \——file-mode=0777——dir-mode=0777 -o bg——http_timeout 120s \ /: /dbfs > /databricks/data/logs/dbfs_fuse_stderr 2>&1 & WAIT_UNTIL=$(($(date +%s) + $WAIT_TIMEOUT)) until mountpoint -q /dbfs || [[$(date +%s) -ge $WAIT_UNTIL]];$CHECK_INTERVAL done """,true)
  4. 驗證初始化腳本是否在集群上成功創建。
    % scala顯示器(dbutils.fs.ls(“dbfs: /磚/ < init-script-folder > /repo.sh"))
  5. 確保記錄了初始化腳本的完整路徑。在配置初始化腳本時將需要它。

配置init腳本

按照文檔配置集群範圍的初始化腳本(AWS|Azure|GCP).

指定初始化腳本的路徑。使用在示例腳本中使用的相同路徑。

初始化腳本配置完成後,需要重啟集群。