在有网络并发基础和大数据框架算法基础情况下,算法和理解源码并不是最耗时的(大概),因为如果首次自己搭建火花在卡夫卡消费应用框架,并且缺乏可执行演示情况下,总会莫名其妙出现一些奇怪问题。

很容易可以写出一个SparkStreaming消费卡夫卡的简单的java的的样例,但奇怪的是本地调试集群总是通不过,

检查发现程序莫名被停止,但控制台在决定停止之前并没有抛出异常

查看Spark Web UI发现是有成功提交程序的,但是大部分错误并没有记录log而是被杀,(有时还会出现一两次“ERROR CoarseGrainedExecutorBackend:Executor自我退出由于:驱动程序169.254.35.0:63201解除关联!关闭。“或”ERROR CoarseGrainedExecutorBackend:RECEIVED SIGNAL TERM“之类的日志,以至于怀疑Spark配置有问题,结果和这次错误没有太大关联),可以推测断点应该在JavaStreamingContext之后,差错期间也有评论过Kafka / Spark /集群Spark和Kafka版本是否对应,但对比并无明显错误。最后打断点到KafkaUtils.createDirectStream,发现确实是在此处抛出如下异常:1  

2.1  

2.2  

线索在第二个例外中:JsonMappingException状语从句:参照jackson问题有关  https://blog.csdn.net/dapanbest/article/details/81281861

解决方法:

<!--排除Kafka自带jackson-->
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.11</artifactId>
    <version>${kafka.version}</version>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
    <scope>provided</scope>
</dependency>
<!--重新添加对jackson依赖-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.6.6</version>
</dependency>

测试通过,最后得出结论:KafkaUtil的问题和默认依赖的jackson使用版本有关..

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐