Spark Stream 消费 Kafka 踩坑

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

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

Spark Stream 消费 Kafka 踩坑_第1张图片

检查发现程序莫名被停止,但控制台在决定停止之前并没有抛出异常Spark Stream 消费 Kafka 踩坑_第2张图片

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

Spark Stream 消费 Kafka 踩坑_第4张图片

2.1  Spark Stream 消费 Kafka 踩坑_第5张图片

2.2  Spark Stream 消费 Kafka 踩坑_第6张图片

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

解决方法:



    org.apache.kafka
    kafka_2.11
    ${kafka.version}
    
        
            com.fasterxml.jackson.core
            *
        
    
    provided



    com.fasterxml.jackson.core
    jackson-core
    2.6.6

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

你可能感兴趣的:(Kafka,Spark,Streaming)