当前位置:   article > 正文

Spark大数据分与实践笔记(第六章 Kafka分布式发布订阅消息系统-04)_在流式计算框架的模型中,通常需要构建数据流的拓扑结构,kafka流处理框架同样是将

在流式计算框架的模型中,通常需要构建数据流的拓扑结构,kafka流处理框架同样是将

第六章 Kafka分布式发布订阅消息系统

6.5 Kafka Streams

6.5.1 Kafka Streams概述

Kafka Streams是Apache Kafka开源项目的一个流处理框架,它是基于Kafka的生产者和消费者,为开发者提供了流式处理的能力,具有低延迟性、高扩展性、弹性、容错的特点,易于集成到现有的应用程序中。
Kafka Streams是一套处理分析Kafka中存储数据的客户端类库, 处理完的数据可以重新写回Kafka,也可以发送给外部存储系统。作为类库,可以非常方便的嵌入到应用程序中,直接提供具体的类供开发者调用,而且在打包和部署的过程中基本没有任何要求,整个应用的运行方式主要由开发者控制,方便使用和调试。
在流式计算框架的模型中,通常需要构建数据流的拓扑结构,例如生产数据源、分析数据的处理器以及处理完成后发送的目标节点, Kafka流处理框架同样是将“输入主题->自定义处理器->输出主题’抽象成一个DAG拓扑图, 如图所示。
在这里插入图片描述

图6-1 计算流程拓扑图
在图中,生产者作为数据源不断生产和发送消息至Kafka的testStreams1主题中,然后通过自定义处理器(Processor)对每条消息执行相应计算逻辑,最后将结果发送到Kafka的testStreams2主题中供消费者消费消息数据。
需要注意的是,任务的执行拓扑图是一张有向无环图(DAG) 。有向表示从一个处理节点到另一个处理节点是具有方向性的,无环表示不能有环路,因为一旦有环路,就会陷入死循环状态,任务将无法结束。

6.5.2 Kafka Streams开发单词计数

本节,将通过实时计算单词出现的次数的经典案例,分步骤讲解开发流程

6.5.2.1 添加依赖

在spark_chapter06项目中, 打开pom.xm文件,添加Kafka Streams依赖,配置参数如下所示。
文件6-5 pom.xm

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-streams</artifactId>
    <version>2.0.0</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

添加相关依赖时,要注意选择匹配当前版本号,避免兼容性问题。

6.5.2.2 编写代码

根据上述业务流程分析得出,单词数据通过自定义处理醋接收并执行相应业务计算,因此创建LogProcessor类, 并且继承Streams API中的Processor接口,在Processor接口中, 定义了以下三个方法:
●Init(ProcessorContext processorContext):初始化上下文对象。
●process(Key, Value): 每按收到一条消息时,都会洞用该方法处理并更新状态进行存储。
●close(): 关闭处理器,这里可以做一些资源清理工作。
Kafka Strearms单词计数详田代码如文件所示。
文件6-6 LogProcessor.java

package cn.itcast.Streams;


import org.apache.kafka.streams.processor.Processor;
import org.apache.kafka.streams.processor.ProcessorContext;

import java.util.HashMap;

public cla
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/221488
推荐阅读
相关标签
  

闽ICP备14008679号