在Windows上从Jupyter笔记本启动PySpark时出现错误消息

时间:2017-01-29 21:33:52

标签: apache-spark pyspark jupyter-notebook jupyter

这种在Jupyter上运行Apache spark的方法曾经有效,但现在它抛出异常:在发送驱动程序之前退出Java网关进程其端口号

以前是Jupyter笔记本中的配置。

import os
import sys

spark_home = os.environ.get('SPARK_HOME', None)
print(spark_home)
spark_home= spark_home+"/python"
sys.path.insert(0, spark_home)
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-  src.zip'))

filename = os.path.join(spark_home, 'pyspark/shell.py')
print(filename)
exec(compile(open(filename, "rb").read(), filename, 'exec'))

spark_release_file = spark_home + "/RELEASE"

if os.path.exists(spark_release_file) and "Spark 1.5" in   open(spark_release_file).read():
pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
if not "pyspark-shell" in pyspark_submit_args: 
    pyspark_submit_args += " pyspark-shell"
    os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args

exec语句抛出异常。

请让我知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

您需要在if语句中调用execute语句

    import os
    import sys

    spark_home = os.environ.get('SPARK_HOME', None)
    print(spark_home)
    spark_home= spark_home+"/python"
    sys.path.insert(0, spark_home)
    sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-  src.zip'))

    filename = os.path.join(spark_home, 'pyspark/shell.py')
    print(filename)


    spark_release_file = spark_home + "/RELEASE"

    if os.path.exists(spark_release_file) and "Spark 1.5" in   open(spark_release_file).read():
        argsstr= "--master yarn  pyspark-shell ";
        pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", argsstr)
        if not "pyspark-shell" in pyspark_submit_args: 
            pyspark_submit_args += " pyspark-shell"
            os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
        exec(compile(open(filename, "rb").read(), filename, 'exec'))