emr spark cluster模式配置单元问题

avkwfej4  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(393)

在群集模式下运行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 群集上的模式。当我试图提交jar时 cluster 模式时,我收到一个异常:

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

有人能给点建议吗?有什么值得一试的?
附言: pyspark 这个集群上的应用程序在集群模式下就像一个魔咒

mbzjlibv

mbzjlibv1#

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指定在何处查找配置单元jar。emr会为你自己做的。试试看。
如果它不工作,请张贴您的电子病历群集设置。

vu8f3i0k

vu8f3i0k2#

这个问题已经解决了,spark关注的是过时的lib

相关问题