--- Spark学习(拾贰)- Spark Streaming整合Kafka

本文详述了Spark Streaming整合Kafka的两种方法:Receiver和Direct方式。针对Spark 2.2之前,推荐使用spark-streaming-kafka-0-8,而2.3之后推荐spark-streaming-kafka-0-10。Receiver方式通过接收器接收数据,可能丢失数据,需启用WAL确保零数据丢失。Direct方式无接收器,提供更强大的端到端保证,简化并行性,提高效率,且实现精确一次性语义。文中还提供了两种方式的本地和服务器环境联调步骤。
摘要由CSDN通过智能技术生成


官方文档:
http://spark.apache.org/docs/2.2.0/streaming-kafka-integration.html

Spark Streaming整合Kafka的版本选择详解

在spark2.2之前建议选择spark-streaming-kafka-0-8版本;虽然spark-streaming-kafka-0-10是优化更好的;但是2.2之前的相关api还不稳定
在这里插入图片描述
在spark2.3之后建议选择spark-streaming-kafka-0-10版本;spark-streaming-kafka-0-8已经是官方弃用的。
在这里插入图片描述

以下是基于spark2.2的测试:

Receiver方式整合之概述

这种方法使用一个接收器来接收数据。接收器是使用Kafka高级消费者API(高级api就是offset偏移量是自动完成控制;手动控制offset的就是低级api)实现的。与所有接收方一样,通过接收方从Kafka接收到的数据存储在Spark执行器中,然后由Spark流启动的作业处理这些数据。

但是,在默认配置下,这种方法在失败时可能会丢失数据(参见接收方可靠性)。为了确保零数据丢失,您必须在Sparkstreaming中(在Spark 1.2中引入)另外启用WAL机制。这将同步地将所有接收到的Kafka数据保存到分布式文件系统(比如HDFS),以便在故障时可以恢复所有数据。有关写前日志的详细信息,请参阅流编程指南中的部署部分

Receiver方式整合之Kafka测试

Receiver整合前置条件:

  1. 启动zk
  2. 启动kafka
  3. 创建topic
    在这里插入图片描述
  4. 通过控制台测试本topic是否能够正常的生产和消费信息

Receiver方式整合之Spark Streaming应用开发

添加pom文件中的依赖

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
    <version>${spark.version}</version>
</dependency>
import org.apache.spark.SparkConf
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.streaming.{
   Seconds, StreamingContext}

/**
  * Spark Streaming对接Kafka的方式一
  */
object KafkaReceiverWordCount {
   

  def main(args: Array[String]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值