我不是100%確定我理解你通常如何運行腳本,但假設你有一個名爲script.py的腳本,你希望接收2個參數arg1,arg2,並且當你使用spark-提交你有2個選擇OPT1和OPT2運行,如下所示:
spark-submit --opt1 opt1 --opt2 opt2 script.py arg1 arg2
如果我理解正確的話,你的情況是這樣的:
spark-submit --jars spark-assembly-1.5.2.2.3.4.7-4-hadoop2.7.1.2.3.4.7-4.jar,spark-streaming-kafka-assembly_2.10-1.6.1.jar file.py arg1 arg2
我們還假設一切,當你在命令這麼做運行行(如果沒有,那麼確保先運行)。
**定義環境變量**
這一步的目的是使運行如下:
python script.py arg1 arg2
要做到這一點,你需要定義適當的環境變量:
PYTHONPATH
應包含python和py4j的定義:
$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-XXX-src.zip
- $ SPARK_HOME是您安裝spark(例如, /選擇/火花)。在Windows中,您可能將其定義爲%SPARK_HOME%(或者您可以直接放置它)。
- py4j路徑中的XXX取決於您的版本。
- 例如對於spark 2.0.1,這將是py4j-0.10.3-src.zip。
- 對於火花1.6.1我認爲這是py4j-0.9-src.zip,但你應該檢查。
PYSPARK_SUBMIT_ARGS
這告訴火花如何加載一切。它應該包括spark-submit的所有參數,最後加上「pyspark-shell」。 在你的情況下,這可能有以下值:
--jars spark-assembly-1.5.2.2.3.4.7-4-hadoop2.7.1.2.3.4.7-4.jar,spark-streaming-kafka-assembly_2.10-1.6.1 pyspark-shell
配置運行配置
現在,您可以配置此同任何Python腳本。只要確保在腳本參數中有參數