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 条评论
登录 后参与评论

相关文章

来自专栏https://www.cnblogs.com/L

【Spark篇】---Spark资源调度和任务调度

Spark的资源调度是个很重要的模块,只要搞懂原理,才能具体明白Spark是怎么执行的,所以尤其重要。

844
来自专栏祝威廉

StreamingPro 简化流式计算配置

前些天可以让批处理的配置变得更优雅StreamingPro 支持多输入,多输出配置,现在流式计算也支持相同的配置方式了。

502
来自专栏编程

大数据入门基础系列之浅谈Hive的用户接口

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 在前面的博文里,我已经介绍了 Hive 对外提供了三种服务模式来达到用户接口,即 : (1) H...

1699
来自专栏A周立SpringCloud

Spring Cloud内置的Zuul过滤器详解

开端 Spring Cloud默认为Zuul编写并启用了一些过滤器,这些过滤器有什么作用呢?我们不妨按照@EnableZuulServer、@EnableZuu...

3106
来自专栏机器学习算法全栈工程师

Spark资源调优

Spark 作者:章华燕 编辑:龚 赛 概述 1 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可...

3057
来自专栏Hadoop实操

如何在CM中启用YARN的使用率报告

CDH的高级功能"群集利用率报告"(Cluster Utilization Report)是整个多租户方案体系里的一部分,可以用来查看租户的资源使用情况,并可以...

4065
来自专栏王小雷

Spark学习之在集群上运行Spark(6)

Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力。 2. Spark既能...

19310
来自专栏进击的程序猿

实战:基于 docker 的 HA-hadoop 集群搭建

Hadoop的master和slave分别运行在不同的Docker容器中,其中hadoop-master容器中运行NameNode和ResourceManage...

1182
来自专栏云计算

在Hadoop YARN群集之上安装,配置和运行Spark

Spark是一种通用的集群计算系统。它可以在从单个节点到数千个分布式节点的集群上部署和运行并行应用程序。Spark最初设计用于运行Scala应用程序,但也支持J...

561
来自专栏行者悟空

Spark之集群概述

1273

扫码关注云+社区