簡體   English   中英

在Azure Databricks Job中運行python包.egg

[英]Running python package .egg in Azure Databricks Job

使用構建工具(setuptools)將我的python代碼打包為.egg格式。 我想通過azure數據磚中的工作來運行這個包。

我可以通過以下命令在本地機器上執行包。

spark-submit --py-files ./dist/hello-1.0-py3.6.egg hello/pi.py

1)將包復制到DBFS路徑中,如下所示,

work-space -> User -> Create -> Library -> Library Source (DBFS) -> Library Type (Python Egg) -> Uploaded

2)在新的集群模式下創建一個任務作為spark-submit的作業

3)為任務配置下面的參數,

["--py-files","dbfs:/FileStore/jars/8c1231610de06d96-hello_1_0_py3_6-70b16.egg","hello/pi.py"]

實際:/ databricks / python / bin / python:無法打開文件'/databricks/driver/hello/hello.py':[Errno 2]沒有這樣的文件或目錄

預期:作業應該成功執行。

我使用它的唯一方法是使用API​​創建Python作業 由於某種原因,UI不支持此功能。

我使用PowerShell來處理API - 這是一個使用對我有用的雞蛋創建作業的示例:

$Lib = '{"egg":"LOCATION"}'.Replace("LOCATION", "dbfs:$TargetDBFSFolderCode/pipelines.egg")
$ClusterId = "my-cluster-id"
$j = "sample"
$PythonParameters = "pipelines.jobs.cleansed.$j"
$MainScript = "dbfs:" + $TargetDBFSFolderCode + "/main.py"
Add-DatabricksDBFSFile -BearerToken $BearerToken -Region $Region -LocalRootFolder "./bin/tmp" -FilePattern "*.*"  -TargetLocation $TargetDBFSFolderCode -Verbose
Add-DatabricksPythonJob -BearerToken $BearerToken -Region $Region -JobName "$j-$Environment" -ClusterId $ClusterId `
    -PythonPath $MainScript -PythonParameters $PythonParameters -Libraries $Lib -Verbose

這會將我的main.py和pipelines.egg復制到DBFS,然后創建一個指向它們的作業,傳入一個參數。

關於Databricks上的雞蛋的一個令人討厭的事情 - 您必須卸載並重新啟動群集,然后才能獲取您部署的任何新版本。

如果您使用工程集群,這不是問題。

暫無
暫無

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

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