簡體   English   中英

EMR Spark群集模式配置單元問題

[英]EMR Spark cluster mode Hive issue

在群集模式下運行scala spark 2.1應用程序時遇到問題。

 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

有一個.jar ,它可以在client上通過client模式完美地工作和提交。 當我嘗試以cluster模式提交jar時,出現異常:

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)

這是我嘗試運行應用程序的方式:

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 

這是我初始化SparkSession

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

有人可以提出一些建議,什么值得嘗試?

PS:此群集上的pyspark應用程序在群集模式下就像一個pyspark一樣工作

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 

不要使用sqpar.sql.hive.metastore.jar指定在哪里尋找配置單元罐。 EMR會為您自己做到這一點。 試一試。

如果不起作用,請發布您的EMR群集設置。

問題已解決,spark看着過時的庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM