spark-streaming连接kafka报错 java.lang.NoClassDefFoundError: kafka/common/TopicAndPartition

在尝试使用Spark 2.4.7和kafka 0.10进行streaming连接时遇到`java.lang.NoClassDefFoundError: kafka/common/TopicAndPartition`错误。问题出在jar包不匹配。解决方案是使用适用于该环境的spark-streaming-kafka-0-8-assembly_2.11-2.4.7.jar。更换jar包后,运行恢复正常。
摘要由CSDN通过智能技术生成

我的版本:

  • linux:16.04
  • kafka:0.10
  • scala:2.11
  • spark:2.4.7
  • jar包:spark-streaming-kafka-0-8_2.11-2.4.7.jar

在尝试运行spark用直连的方式接收kafka的数据时,出现报错,python代码如下(仅测试环境,可忽略):

#spark通过直连的方式接收kafka数据,仅以测试环境是否可用为目的

from pyspark import SparkContext
from pyspark import SparkConf
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils


def start():
    spark_conf = SparkConf().setMaster("local").setAppName("KafkaDirect")
    sc = SparkContext(conf=spark_conf)
    sc.setLogLevel("WARN")
    ssc=StreamingContext(sc,1)

    brokers="localhost:9092"
    topic='ratingTopic'
    kafkaStreams = KafkaUtils.createDirectStream(ssc, [topic], kafkaParams={"metadata.broker.list": brokers})
    #kafkaStreams = KafkaUtils.createStream(ssc,brokers,1,{topic:1})
    #统计生成的随机数的分布情况
    result=kafkaStreams.map(lambda x:(x[0],1)).reduceByKey(lambda x, y: x + y)
    #打印offset的情况,此处也可以写到Zookeeper中
    #You can use transform() instead of foreachRDD() as your
    # first method call in order to access offsets, then call further Spark methods.
    kafkaStreams.transform(storeOffsetRanges).foreac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值