web-dev-qa-db-fra.com

Spark 2.1 - Erreur lors de l'instanciation de HiveSessionState

Avec une nouvelle installation de Spark 2.1, je reçois une erreur lors de l'exécution de la commande pyspark.

Traceback (most recent call last):
File "/usr/local/spark/python/pyspark/Shell.py", line 43, in <module>
spark = SparkSession.builder\
File "/usr/local/spark/python/pyspark/sql/session.py", line 179, in getOrCreate
session._jsparkSession.sessionState().conf().setConfString(key, value)
File "/usr/local/spark/python/lib/py4j-0.10.4-src.Zip/py4j/Java_gateway.py", line 1133, in __call__
File "/usr/local/spark/python/pyspark/sql/utils.py", line 79, in deco
raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.Apache.spark.sql.Hive.HiveSessionState':"

J'ai Hadoop et Hive sur la même machine. Hive est configuré pour utiliser MySQL pour le métastore. Je n'ai pas eu cette erreur avec Spark 2.0.2.

Est-ce que quelqu'un peut me diriger dans la bonne direction?

7
Kring

J'ai eu le même problème. Certaines des réponses Sudo chmod -R 777 /tmp/Hive/, ou de rétrograder une étincelle avec hadoop à 2.6 ne fonctionnaient pas pour moi. Je me suis rendu compte que ce qui me posait le problème, c’était que je faisais des requêtes SQL avec sqlContext au lieu d’utiliser sparkSession. 

sparkSession =SparkSession.builder.master("local[*]").appName("appName").config("spark.sql.warehouse.dir", "./spark-warehouse").getOrCreate()
sqlCtx.registerDataFrameAsTable(..)
df = sparkSession.sql("SELECT ...")

cela fonctionne parfaitement pour moi maintenant. 

7
marilena.oita

J'obtenais la même erreur dans l'environnement Windows et l'astuce ci-dessous a fonctionné pour moi.

dans Shell.py la session d'allumage est définie avec .enableHiveSupport() 

 spark = SparkSession.builder\
            .enableHiveSupport()\
            .getOrCreate()

Supprimez le support Hive et redéfinissez la session d'allumage comme suit:

spark = SparkSession.builder\
        .getOrCreate()

vous pouvez trouver Shell.py dans votre dossier d'installation d'étincelle ..__ pour moi c'est dans "C:\spark-2.1.1-bin-hadoop2.7\python\pyspark"

J'espère que cela t'aides

16
Nim J

Spark 2.1.0 - Lorsque je l'exécute avec l'option client fil - Je ne vois pas ce problème, mais le mode cluster de fil donne le message "Erreur lors de l'instanciation de 'org.Apache.spark.sql.Hive.HiveSessionState':". 

Je cherche toujours une réponse. 

3
Vjender M

Le problème pour moi a été résolu en désactivant HADOOP_CONF_DIR variable d’environnement. Cela pointait vers répertoire de configuration hadoop et lors du démarrage de pyspark Shell, la variable permettait à spark de lancer le cluster hadoop qui n’était pas initialisé. 

Donc, si vous avez HADOOP_CONF_DIR variable activé, vous devez démarrer le cluster hadoop avant de pouvoir utiliser spark shells

Ou vous devez désactiver la variable.

1
Ramesh Maharjan

J'ai constaté cette erreur sur un nouveau Mac (2018) fourni avec Java 10. Le correctif était de définir Java_HOME sur Java 8:

export Java_HOME=`usr/libexec/Java_home -v 1.8`

0
Deepak

J'avais cette erreur en essayant de lancer pyspark et spark-Shell quand mon HDFS n'a pas été démarré. 

0
llevar

Vous manquez le pot à étincelles Hive.

Par exemple, si vous utilisez Scala 2.11, avec Spark 2.1, vous pouvez utiliser ce fichier .jar.

https://mvnrepository.com/artifact/org.Apache.spark/spark-Hive_2.11/2.1.0

0
user3542930

Moi aussi je me débattais en mode cluster. Ajout du fichier Hive-site.xml du répertoire sparkconf; si vous avez un cluster hdp, il devrait être situé dans/usr/hdp/current/spark2-client/conf Cela fonctionne pour moi.

0
Vivek Jain