clave no encontrada: _PYSPARK_DRIVER_CALLBACK_HOST

Estoy tratando de ejecutar este código:

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() 

Y obteniendo un error

 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 

Estoy usando PyCharm y MacOS, Python 3.6, Spark 2.3.1

¿Cuál es la posible razón de este error?

Este error es el resultado de una falta de coincidencia de versión. La variable de entorno a la que se hace referencia en el _PYSPARK_DRIVER_CALLBACK_HOST ( _PYSPARK_DRIVER_CALLBACK_HOST ) se ha eliminado durante la dependencia de la actualización Py4j a 0.10.7 y se ha vuelto a la twig 2.3 en 2.3.1.

Teniendo en cuenta la información de la versión:

Estoy usando PyCharm y MacOS, Python 3.6, Spark 2.3.1

Parece que tienes el paquete 2.3.1 instalado, pero SPARK_HOME apunta a una instalación anterior (2.3.0 o anterior).

Esta resolución que estoy a punto de representar también se encarga de la “clave no encontrada: _PYSPARK_DRIVER_CALLBACK_HOST / Java Gateway / PySpark 2.3.1” error !! Agregue a su bashrc o / etc / environment o / etc / profile

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

Eso debería hacer el doobie allí mismo. Puedes agradecerme de antemano. #Pulgares hacia arriba 🙂

Es posible que su código no tenga acceso a la env env en .bash_profile o / etc / profile, póngalos en su código directamente.

 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)