我有CDH5.7.0和spark 1.6.0和kafka 0.9.0,我需要运行一个Spark流作业,它用0.8.2.2版本消耗来自另一个集群中的kafka broker的消息。我创建了一条溪流,如:
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。但问题是,星火正在从CDH类路径中装载大量内容,如下所示:
/opt/cloudera/parcels/CDH-5.7.0-1.cdh5.7.0.p0.45/lib/spark/bin/spark-class
正在添加一个新版本的卡夫卡客户端,而不是我需要的版本。有办法从代码中覆盖特定的库吗?
发布于 2016-04-25 07:23:02
您可以编辑位于Cloudera上的Spark目录(/etc/spark/conf )下的星火-env.sh并进行更改。
export SPARK_HOME=/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark指向你的星火实例。或者,您也可以部署您的Spark版本,并使用Cloudera的Hadoop配置(将HADOOP_CONF_DIR设置在smack-env.sh中至/etc/hadoop/conf)。在这种情况下,如果在配置中设置了应用程序,则可以查看应用程序历史记录。
spark.eventLog.dir=hdfs:/user/spark/applicationHistory发布于 2016-04-25 09:50:47
使用-jar选项分发您的kafka 0.8.2.2 jar,并在spark.driver.userClassPathFirst=true和spark.executor.userClassPathFirst=true中指定spark.conf,这将在CDH类路径之前使用子类加载器加载jar。
https://stackoverflow.com/questions/36828820
复制相似问题