2016-12-26 43 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脚本。只要确保在脚本参数中有参数