通过EventTime演示Kafka与Flink集成代码

本文示例介绍了如何集成Kafka与Flink,通过Flink Streaming每10秒从Kafka中读取数据,统计主机machine-1的内存使用情况,并将结果写入本地文件。主要涉及MessageSplitter、MessageWaterEmitter和KafkaMessageStreaming等类的编写,以及KafkaProducerTest用于模拟数据发送。
摘要由CSDN通过智能技术生成

前言

本例模拟中将集成Kafka与Flink:Flink实时从Kafka中获取消息,每隔10秒去统计机器当前可用的内存数并将结果写入到本地文件中。

环境准备

Apache Kafka 0.11.0.0
Apache Flink 1.3.1
Gradle 3.5 (版本号不是强要求)
本例运行在Windows环境,但可以很容易地移植到其他平台上。

创建Flink Streaming工程

本例使用Intellij IDEA作为项目开发的IDE。首先创建Gradle project,group为’huxihx.flink.demo’,artifact id为‘flink-kafka-demo’,version为‘1.0-SNAPSHOT’。整个项目结构如图所示:

在这里插入图片描述

代码开发

代码主要由两部分组成:

  • MessageSplitter类、MessageWaterEmitter类和KafkaMessageStreaming类:Flink streaming实时处理Kafka消息类
  • KafkaProducerTest类和MemoryUsageExtrator类:构建Kafka测试消息

本例中,Kafka消息格式固定为:时间戳,主机名,当前可用内存数。其中主机名固定设置为machine-1,而时间戳和当前可用内存数都是动态获取。由于本例只会启动一个Kafka producer来模拟单台机器发来的消息,因此在最终的统计结果中只会统计machine-1这一台机器的内存。下面我们先来看flink部分的代码实现。

  1. MessageSplitter类(将获取到的每条Kafka消息根据“,”分割取出其中的主机名和内存数信息)
public class MessageSplitter implements FlatMapFunction<String, Tuple2<String, Long>> {

    @Override
    public void flatMap(String value, Collector<Tuple2<String, Long>> out) throws Except
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值