2017-08-04 1 views
0

a un problème avec l'exécution de l'application scala spark 2.1 en mode cluster.EMR Mode cluster Spark Le problème Hive

Release label:emr-5.7.0* 
Hadoop distribution:Amazon 2.7.3 
Applications:Hive 2.1.1, Presto 0.170, Spark 2.1.1, Ganglia 3.7.2, Zeppelin 
0.7.2, ZooKeeper 3.4.10 

Avoir un .jar qui fonctionne parfaitement et la présentation via le mode client sur le cluster. Lorsque je tente de présenter jarre en mode cluster, je reçois une exception:

java.lang.IllegalArgumentException: Error while instantiating org.apache.spark.sql.hive.HiveSessionState': 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:981) at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:110) 

...

Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf 
    at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala:97) 

Voici comment je tente de lancer l'application:

spark-submit --master yarn \ 
--deploy-mode cluster \ 
--num-executors 64 \ 
--executor-cores 6 \ 
--driver-memory 6g \ 
--executor-memory 10g \ 
--conf "spark.driver.extraClassPath=/usr/lib/spark/jars/*.jar" \ 
--conf "spark.executor.extraClassPath=/usr/lib/spark/jars/*.jar" \ 
--conf "spark.yarn.queue=test_queue" \ 
--conf "spark.sql.hive.metastore.jars=/usr/hive/lib/*.jar" \ 
--jars /usr/lib/spark/jars/datanucleus-rdbms-3.2.9.jar,/usr/lib/spark/jars/datanucleus-api-jdo-3.2.6.jar,/usr/lib/spark/jars/datanucleus-core-3.2.10.jar \ 
--class MainApp /home/hadoop/app/application-1.0.jar 

Voici mon initialisation de SparkSession:

val sparkSession = SparkSession 
    .builder() 
    .appName(applicationName) 
    .enableHiveSupport() 
    .config("hive.exec.dynamic.partition", "true") 
    .config("hive.exec.dynamic.partition.mode", "nonstrict") 
    .getOrCreate() 

Quelqu'un pourrait-il donner une suggestion, qu'est-ce qui vaut la peine d'essayer?

PS: application pyspark sur ce groupe fonctionne comme un charme en mode cluster

+0

Did ** pots ** Hive présents dans tous les esclaves de votre cluster? – mrsrinivas

+0

@mrsrinivas Oui, tous les jarres sont présents sur les nœuds esclaves – oki

Répondre

0
spark-submit --master yarn \ 
--deploy-mode cluster \ 
--num-executors 64 \ 
--executor-cores 6 \ 
--driver-memory 6g \ 
--executor-memory 10g \ 
--conf "spark.driver.extraClassPath=/usr/lib/spark/jars/*.jar" \ 
--conf "spark.executor.extraClassPath=/usr/lib/spark/jars/*.jar" \ 
--conf "spark.yarn.queue=test_queue" \ 
--conf "spark.sql.hive.metastore.jars=/usr/hive/lib/*.jar" \ 
--jars /usr/lib/spark/jars/datanucleus-rdbms- 
3.2.9.jar,/usr/lib/spark/jars/datanucleus-api-jdo- 
3.2.6.jar,/usr/lib/spark/jars/datanucleus-core-3.2.10.jar \ 
--class MainApp /home/hadoop/app/application-1.0.jar 

Ne pas préciser où chercher les pots de la ruche avec sqpar.sql.hive.metastore.jar. EMR le fera pour vous même. Donnez un coup de feu.

Si cela ne fonctionne pas, veuillez publier vos paramètres de cluster EMR.

+0

Unf. ça n'aide pas, j'ai mis à jour la question avec emr conf – oki

0

Le problème a été résolu, étincelle regarde libs obsolètes