我們一直試圖啟動一個spark-submit python任務使用參數“檔案”,類似於一個用於紗線。
然而,我們沒能成功地使它在磚工作。
我們知道OnPrem安裝我們可以用一些這樣的教程:https://conda.github.io/conda-pack/spark.html它使用紗資源本地化壓縮我們的焦油。廣州在執行人。
這是相當有趣的bcuz所有我們需要做的是把我們的項目在一個輪文件並提交spark-submit內。
另一個原因是,如果我們成功地解決這個問題,我們所有的模型可以更容易地遷移到磚,沒有太多的努力。
有人需要這個已經和設法解決?社區如何處理spark-submit磚,專注於整個項目而不是notebook-based項目?
@Ryoji Kuwae否決權:
使用檔案與conda環境參數數據磚,可以遵循以下步驟:
1)為你的項目創建一個conda環境和出口. tar。gz文件:
conda創建——名稱myenv conda激活myenv conda安裝<所需包> conda myenv.tar.gz包——輸出
2)上傳myenv.tar。gz文件數據磚工作區目錄或到雲存儲位置如AWS S3或Azure Blob存儲。
3)在引發應用程序代碼中,指定檔案myenv.tar參數與路徑。gz文件:
spark-submit——myenv.tar檔案。廣州# myenv my_script.py
在這裏,my_script。py是主要的火花應用程序的Python腳本。#分離器用於指定的名稱conda環境內部存檔。在這種情況下,環境的名字是
myenv。
4)在你主要的Python腳本,激活conda環境使用spark-submit命令行選項- conf spark.pyspark.python =。/ myenv / bin / Python:
導入子流程導入操作係統env_dir = "。/ myenv”操作係統。環境(“路徑”)= env_dir +操作係統。pathsep +操作係統。環境(“路徑”)subprocess.call ([’。/ myenv / bin / python ', ' my_script.py '])
這集Python解釋器使用conda環境運行的Python的二進製代碼。env_dir變量設置為conda環境的目錄打開的火花。環境的bin目錄添加到PATH環境變量,因此所需的包可以加載。
注意,如果你conda環境包含非python依賴性,如編譯的庫,您可能需要額外的配置參數包含在您的火花在運行時應用程序來確保他們正確加載。
同樣,如果你想包你的整個項目作為輪文件,你可以把它存檔以及conda環境。然後,在主Python腳本中,您可以導入所需模塊使用sys輪文件。路徑和importlib模塊。