2016-12-26 40 views

回答

0

我不是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腳本。只要確保在腳本參數中有參數