簡體   English   中英

Pyspark:從存檔內部運行腳本

[英]Pyspark: run a script from inside the archive

我有一個存檔(基本上是一個捆綁的 conda 環境 + 我的應用程序),我可以在 yarn master 模式下輕松地與 pyspark 一起使用:

PYSPARK_PYTHON=./pkg/venv/bin/python3 \ 
spark-submit \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./pkg/venv/bin/python3 \
--master yarn \
--deploy-mode cluster \
--archives hdfs:///package.tgz#pkg \
app/MyScript.py

這按預期工作,這不足為奇。

現在,如果 MyScript.pypackage.tgz 中,我該如何運行它。 不在我的本地文件系統上?

我想用例如替換我的命令的最后一行。 ./pkg/app/MyScript.py但隨后火花抱怨: java.io.FileNotFoundException: File file:/home/blah/pkg/app/MyScript.py does not exist

我當然可以先提取它,將它單獨放在 hdfs 上......有一些解決方法,但因為我把所有東西都放在一個不錯的地方,我很想使用它。

如果相關,這是 CDH 上的 spark 2.4.0、python 3.7。

據我了解,您不能:您必須向spark-submit提供 Python 腳本。

但是您可以有一個非常短的腳本並使用--py-files分發您的代碼的 ZIP 或 EGG 的 rest:

# go.py

from my.app import run

run()
# my/app.py

def run():
  print("hello")

您可以創建一個包含 my 目錄的 ZIP 文件並使用短入口點腳本提交: spark-submit --py-files my.zip go.py

如果你願意,你可以制作一個通用的go.py ,它接受 arguments 告訴它要導入和運行哪個模塊和方法。

暫無
暫無

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

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