如何重写cdh中运行spark的库

relj7zay  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(378)

我有cdh5.7.0和spark1.6.0以及kafka 0.9.0,我需要运行一个spark流作业,该作业使用另一个集群中的kafka代理的消息,该集群的版本是0.8.2.2。我创建了一个流,比如:

val stream = KafkaUtils.createStream(ssc, Utils.settings.zookeeperQuorum, Utils.settings.kafkaGroup, Utils.settings.topicMapWifi)

在build.sbt中,我要添加:

libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka" % "1.2.0"

有了这个库,我将使用一个适合0.8.2.x版代理的客户机。但问题是spark从cdh-Clapsath装载了一吨东西:
/opt/cloudera/parcels/cdh-5.7.0-1.cdh5.7.0.p0.45/lib/spark/bin/spark-class
正在添加一个比我需要的Kafka客户端更新的版本。有没有办法从代码中重写特定的库?

syqv5f0l

syqv5f0l1#

您可以编辑位于spark config目录下的spark-env.sh(/etc/spark/conf on cloudera)并更改

export SPARK_HOME=/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark

指出你的Spark示例。或者,您可以部署您的spark版本并使用cloudera的hadoop配置(将spark-env.sh中的hadoop\u conf\u dir设置为/etc/hadoop/conf)。在这种情况下,您将能够看到应用程序历史,如果您的应用程序设置在配置中

spark.eventLog.dir=hdfs:/user/spark/applicationHistory
emeijp43

emeijp432#

使用--jar选项分发kafka 0.8.2.2 jar并指定 spark.driver.userClassPathFirst=true 以及 spark.executor.userClassPathFirst=true 在spark.conf中,它将使用子类装入器在cdh类路径之前装入jar。

相关问题