zoukankan      html  css  js  c++  java
  • 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/
     
  • 相关阅读:
    反序列化二叉树-队列
    二叉树中和为某一值的路径
    深拷贝复杂链表
    机器人运动范围
    vue 安装及使用
    json 函数
    js 获取当前时间
    JS编码方式
    搭建自己的Webpack项目
    webpack 安装 打包
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13131575.html
Copyright © 2011-2022 走看看