SparkStreaming整合Kafka

之前说了SparkStreaming能接受的其中一种高级数据源——Flume,现在就来介绍另外一种高级数据源——Kafka
代码已托管至github:https://github.com/2NaCl/kafka-Streaming-demo

在这里插入图片描述
Kafka是一种基于消息发布订阅的消息队列,是分布式,分区有副本的日志服务,但是在0.8-0.10出现了一定的更新,如下:
在这里插入图片描述
这里选择的是0.8 or higher版本作为demo案例。

0.10的集成方法和0.8是有些相像的,但是api会出现少许的差异, 下面就按照官方来进行一次整合demo 的演示。

目标一:基于Receiver-based Approach

  1. 导入maven依赖
		<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
            <version>2.1.1</version>
        </dependency>
  1. 引入sparkstreaming的配置和kafka相关的配置,并且设置好四个参数

在这里插入图片描述

  1. 在开始写业务代码之前,我们要依据线程数,将输入进来的数据转换为map形式,这样才能给我们后面计算
    在这里插入图片描述
  2. 然后创立kafka的流

在这里插入图片描述

  1. 进行wordcount统计

在这里插入图片描述

  1. 启动kafka,创立topic,名字自定义,然后设置一下这个在这里插入图片描述
    对应上面的四个参数

  2. 启动代码,测试

在这里插入图片描述
在这里插入图片描述

目标二:基于Direct Approach

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

  1. 简化并行性:不用创建多个kafka的DataSource,也可以联合起来,因为我们使用了directStream,它可以让SparkStreaming创建和kafka分区个数一样的RDD,然后互相进行一对一的映射。
  2. 效率:第一种方法保证数据不丢失的方法是数据存入日志,第二种方法杜绝了这个问题,因为没有接收器,所以只要有足够的kafka,就可以保证数据安全
  3. 完整性:第一种方法使用kafka API在zookeeper中存储消耗的偏移量,第二种方法是利用checkpoint跟踪偏移量。

下面进行demo的演示:

  1. 导入依赖和之前一样
  2. 也是先进行sparkConf和StreamingContext的配置

在这里插入图片描述
3. 和之前不同的是,这次要创建的是DirectStream,先进入它的API看需要的参数,这里分别是String,String,StringDecoder和StringDecoder这四个泛型

在这里插入图片描述

  1. 然后传入参数,从上图可知,我们需要的是ssc,kafkaParams和topic
    然后依次创建,ssc有了,然后创建kafkaParams

在这里插入图片描述
5. 创建topicSet

在这里插入图片描述

然后导入这几个参数即可

  1. 运行
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值