spark-submit提交Spark Streamming+Kafka程序

前言

Spark Streaming本身是没有Kafka相关的jar包和API的,如果想利用Spark Streaming获取Kafka里的数据,需要自己将依赖添加SBT或Maven项目中,添加依赖更新项目之后,就可以在Eclipse等IDE里直接运行Spark Streamming+Kafka的程序了,可参考Spark Streaming连接Kafka入门教程,但是如果需要在集群通过spark-submit提交jar包的方式来运行程序的话,会抛出异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/StringDeserializer

这是因为Spark本身没有Kafka相关的jar,所以需要将与Kafka相关的jar添加Spark环境中

1、相关jar包

总共需要两个jar,可以在SBT和Maven下载的目录里找到,分别为org.apache.spark/spark-streaming-kafka-0-10_2.11/jars/spark-streaming-kafka-0-10_2.11-2.3.0.jar和org.apache.kafka/kafka-clients/jars/kafka-clients-0.10.0.1.jar,具体的名字会因你的kafka版本和spark版本而有所不同

2、方法一

第一个方法也是我觉得最简单的方法,将这两个jar拷贝到$SPARK_HOME/jars目下即可 如果用ambari安装的spark2,则对应的目录为

/usr/hdp/current/spark2-client/jars/

拷贝命令

cp spark-streaming-kafka-0-10_2.11-2.3.0.jar kafka-clients-0.10.0.1.jar /usr/hdp/current/spark2-client/jars/

然后通过如下命令提交jar即可(只是最简单的配置,实际还需要配置Executor的数量,内存大小等等)

spark-submit --master yarn --class com.dkl.leanring.spark.kafka.KafaDemo spark-scala_2.11-1.0.jar

3、方法二

通过–jars指定需要的jar,多个jar需要以逗号分隔

spark-submit --master yarn --class com.dkl.leanring.spark.kafka.KafaDemo --jars jars/kafka-clients-0.10.0.1.jar,jars/spark-streaming-kafka-0-10_2.11-2.3.0.jar spark-scala_2.11-1.0.jar

这种方式如果依赖的jar很多的话就不方便了

关于spark-submit添加依赖jar更详细说明可参考https://dongkelun.com/2018/05/06/sparkSubmitException/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏分布式系统和大数据处理

安装和配置Hadoop集群(3节点)

在 安装和配置Hadoop(单节点) 这篇文章中,已经进行了Hadoop单机伪集群模式的部署。生产环境中,Hadoop都是以集群方式进行安装和部署的,否则,就不...

1772
来自专栏Hadoop实操

如何在CDH集群外配置Kerberos环境的Gateway节点

3524
来自专栏行者悟空

Spark的容错机制

2364
来自专栏我是攻城师

Hive集成Tez让大象飞起来

3188
来自专栏Hadoop实操

0459-如何使用SQuirreL通过JDBC连接CDH的Hive(方式一)

SQuirreL SQL Client是一个使用Java写的访问各种数据库客户端工具,使用JDBC统一了数据库的访问接口,通过SQuirreL SQL Clie...

713
来自专栏AILearning

Apache Zeppelin 中 HDFS文件系统 解释器

概述 Hadoop文件系统是hadoop项目的分布式,容错文件系统的一部分,通常用作Hadoop MapReduce和Apache Spark或Allux...

2455
来自专栏行者悟空

Spark之集群概述

1413
来自专栏Hadoop实操

如何在CDH集群外配置非Kerberos环境的Gateway节点

1714
来自专栏分布式系统和大数据处理

安装和配置Hadoop集群(3节点)

在 安装和配置Hadoop(单节点) 这篇文章中,已经进行了Hadoop单机伪集群模式的部署。生产环境中,Hadoop都是以集群方式进行安装和部署的,否则,就不...

2585
来自专栏喵了个咪的博客空间

[喵咪大数据]Hadoop单机模式

千里之行始于足下,学习大数据我们首先就要先接触Hadoop,上节介绍到Hadoop分为Hadoop-HDFS,Hadoop-YARN,Hadoop-Mapred...

3196

扫码关注云+社区