SparkStreaming整合Kafka


前面说过SparkStreaming可以接受的一种高级数据源——Flume,今天来介绍另外一种高级数据源——Kafka。。。

在这里插入图片描述
Kafka是一种基于消息发布订阅的消息队列,并且是分布式的,分区有副本的日志服务但是在0.8-0.10出现了一些更新上的改变,具体情况如下:
在这里插入图片描述
本人使用的是0.8 or higher版本作为讲解。。。

案例一、基于基于Receiver-based Approach

  1. 首先导入相关依赖
		<!--Spark Streaming整合Kafka依赖-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
            <version>2.1.1</version>
        </dependency>
  1. 获取到SparkStreaming的配置和Kafka相关的配置(Kafka需要的相关参数),开始先做出判断参数个数是否满足,满足再继续下去
    在这里插入图片描述
  2. 根据线程数,将输入的数据转换为map形式,才能继续后面的计算
    在这里插入图片描述
  3. SparkStreaming和Kafka的连接
    在这里插入图片描述
  4. WordCount的统计
    在这里插入图片描述
  5. 配置一下kafka需要的参数,然后启动kafka
    在这里插入图片描述

案例二、Direct Approach

在这里插入图片描述
这是无接收器的方法,为了保证端到端的信息安全到达,要定期向kafka查询每个topic和partition中的偏移量,并且处理这些数据的时候消费者API会读取之前定义好的一定范围的数据。。
在这里插入图片描述
和第一种相比,优点有:

  1. 简化并行性:不用创建多个kafka的DataSource,可以联合起来,因为使用了directStream,可以让SparkStreaming创建和kafka分区个数一样的RDD,然后互相进行一对一的映射。
  2. 效率:第一种方法保证数据不丢失的方法时数据存入日志,第二种方法杜绝了这个问题因为没有接收器,因此要有足够的kafka就可以保证数据安全。
  3. 完整性:第一种方法使用kafka API在Zookeeper中存储消耗的偏移量,第二种方法时利用checkpoint跟踪偏移量
  1. 导入的maven依赖和第一种方法导入的一样
  2. 获取到SparkStreaming的配置和Kafka相关的配置(Kafka需要的相关参数)
    在这里插入图片描述
  3. 和之前不同的是,这次要创建的是DirectStream,先进入它的API看需要的参数,需要的分别是String,String,StringDecoder和StringDecoder这四个泛型
    在这里插入图片描述
  4. 传入参数,需要的是ssc,kafkaParams和topic
    在这里插入图片描述
  5. 创建topicSet
    在这里插入图片描述
  6. 业务逻辑的处理
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值