Flume + Kafka + Flink 简单例子

本文介绍如何使用Apache Flink从Kafka中消费实时数据进行分析。通过配置Flume采集数据并将其发送到Kafka topic,再利用Flink读取这些数据实现实时处理。示例代码展示了Flink连接Kafka的具体实现。
摘要由CSDN通过智能技术生成

Kafka作为Flume 的 Channel,将数据保存到topic中,Flink作为Kafka的消费者,消费topic中的数据,实现实时数据的分析。

Flink 程序:

import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, createTypeInformation}
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer

import java.util.Properties

/**
 * DATE:2022/10/3 21:49
 * AUTHOR:GX
 */
object SourceKafkaTest {
  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)

    //保存Kafka连接的相关配置
    val properties = new Properties()
    properties.setProperty("bootstrap.servers","master:9092")
    properties.setProperty("group.id","consumer-group")

    val stream = env.addSource(new FlinkKafkaConsumer[String]("clicks",
      new SimpleStringSchema(), properties))

    stream.print()

    env.execute()

  }
}

Kafka作为Flume的Channels

采集方案:
a1.sources=s1
a1.channels=c1

a1.sources.s1.type=exec
a1.sources.s1.command=tail -F /opt/flinkDemo/data/logs/

a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers=master:9092
a1.channels.c1.kafka.topic=clicks

a1.sources.s1.channels=c1

定时向文件中插入数据(模拟日志文件的生成,向指定文件中插入当前时间戳)
while true;do echo $(date "+%Y%m%d%H%M%S") >> /opt/flinkDemo/data/logs/logs.log;sleep 0.5;done

可以创建一个生产者,手动向topic中插入数据:
bin/kafka-console-producer.sh --bootstrap-server master:9092 --topic clicks
打开消费者,查看是否有数据实时产生:
bin/kafka-console-consumer.sh --bootstrap-server master:9092 --topic clicks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值