代码之家  ›  专栏  ›  技术社区  ›  bboy

找不到密钥:_pyspark_driver_callback_host

  •  8
  • bboy  · 技术社区  · 6 年前

    我试图运行以下代码:

    import pyspark
    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder \
            .master("local") \
            .appName("Word Count") \
            .getOrCreate()
    
    df = spark.createDataFrame([
        (1, 144.5, 5.9, 33, 'M'),
        (2, 167.2, 5.4, 45, 'M'),
        (3, 124.1, 5.2, 23, 'F'),
        (4, 144.5, 5.9, 33, 'M'),
        (5, 133.2, 5.7, 54, 'F'),
        (3, 124.1, 5.2, 23, 'F'),
        (5, 129.2, 5.3, 42, 'M'),
       ], ['id', 'weight', 'height', 'age', 'gender'])
    
    df.show()
    print('Count of Rows: {0}'.format(df.count()))
    print('Count of distinct Rows: {0}'.format((df.distinct().count())))
    
    spark.stop()
    

    得到一个错误

    18/06/22 11:58:39 ERROR SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[main,5,main]
    java.util.NoSuchElementException: key not found: _PYSPARK_DRIVER_CALLBACK_HOST
        ...
    Exception: Java gateway process exited before sending its port number
    

    我正在使用pycharm和macos,python 3.6,spark 2.3.1

    这个错误的可能原因是什么?

    3 回复  |  直到 6 年前
        1
  •  13
  •   Alper t. Turker    6 年前

    此错误是版本不匹配的结果。在回溯中引用的环境变量( _PYSPARK_DRIVER_CALLBACK_HOST )在 update Py4j dependency to 0.10.7 后移到2.3.1中的2.3分支。

    考虑版本信息:

    我正在使用pycharm和macos,python 3.6,spark 2.3.1

    看起来你已经安装了2.3.1包,但是 SPARK_HOME 指向旧的(2.3.0或更早版本)安装。

        2
  •  10
  •   SCOTT McNEIL    6 年前

    我即将呈现的这个解析还处理了“找不到密钥:_pyspark_driver_callback_host/java gateway/pyspark 2.3.1”错误!!添加到bashrc或/etc/environment或/etc/profile

    export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
    export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH
    

    这应该会让你很失望。你可以提前谢谢我。#拇指指:)

        3
  •  0
  •   xfly    6 年前

    bash_profile或/etc/profile中的env var可能无法被代码访问,请将它们直接放入代码中。

    import os
    import sys
    
    os.environ['SPARK_HOME'] = "/opt/cloudera/parcels/SPARK2/lib/spark2"
    os.environ['PYSPARK_SUBMIT_ARGS'] = "--master yarn pyspark-shell" 
    
    
    
    
    sys.path.append(os.path.join(os.environ['SPARK_HOME'], "python"))
    sys.path.append(os.path.join(os.environ['SPARK_HOME'], "python/lib/py4j-0.10.6-src.zip"))
    
    
    try:
        from pyspark import SparkContext
        from pyspark.sql import SparkSession
    
        from pyspark import SparkConf
    
        print("success")
    
    except ImportError as e:
        print("error importing spark modules", e)
        sys.exit(1)