windows下,利用flume将csv数据文件上传至kafka

以下内容仅做笔记用

准备工作

首先准备好电脑相关配置:

JDK1.8下载与安装(引用猿月亮博主的相关博文)

windows下的zookeeper和kafka安装及配置-CSDN博客

windows下flume的安装与配置教程-CSDN博客

写好flume配置文件

打开flume目录下的conf文件,创建一个example.conf配置文件,里面包含source、channel、sink信息

简单示例如下:

# Define the source, sink, and channel
a1.sources = src
a1.sinks = k1
a1.channels = c1

# Describe the source
a1.sources.src.type = spooldir
a1.sources.src.spoolDir = E:\\apache-flume-1.11.0-bin
a1.sources.src.fileHeader = false
a1.sources.src.includePattern = work12.csv
a1.sources.src.deserializer = LINE
a1.sources.src.deserializer.maxLineLength = 10000

# Define the interceptor with the correct type
a1.sources.src.interceptors = head_filter
a1.sources.src.interceptors.head_filter.type = regex_filter
a1.sources.src.interceptors.head_filter.regex = ^user_id*
a1.sources.src.interceptors.head_filter.excludeEvents = true

# Describe the sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.bootstrap.servers = localhost:9092
a1.sinks.k1.kafka.topic = mytopic
a1.sinks.k1.kafka.flumeBatchSize = 500
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.k1.kafka.producer.batch.size = 1048576
a1.sinks.k1.kafka.consumer.session.timeout.ms = 30000
a1.sinks.k1.kafka.consumer.heartbeat.interval.ms = 10000

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 5000

# Bind the source and sink to the channel
a1.sources.src.channels = c1
a1.sinks.k1.channel = c1

启动zookeeper和kafka

1. 打开cmd一号(不关闭),输入zkServer,启动zk服务

2. 打开cmd二号(不关闭),输入 cd E:\kafka_2.12-3.4.0 进入根目录,输入

bin\windows\kafka-server-start.bat config\server.properties

启动kafka服务

3. 打开cmd三号(不关闭),输入

.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic mytopic --partitions 1 --replication-factor 1

这里根据要求调整分区,创建一个新的topic作为本次数据消息发送的平台

4. 在cmd三号里(不关闭),输入

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic mytopic --from-beginning

创建消费者消息监听

5. 打开cmd四号(不关闭),启动flume,输入

cd E:\apache-flume-1.11.0-bin\bin

flume-ng agent -n a1 -f E:\apache-flume-1.11.0-bin\conf\example.conf

以 example.conf 文件中自定义的配置启动 flume。

这里example.conf 文件定义了一个简单的数据流,从一个源(spooldir)读取数据,经过一个通道(memory channel),并将数据发送到一个 Kafka 主题中。详细介绍看flume配置文件的一些语义解释-CSDN博客

运行完毕后,打开cmd三号,发现消费者监听会话成功,与原数据对比如下:

到此flume传输数据至kafka操作结束

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flume 是一个分布式、可靠和高可用的海量日志采集、聚合和传输系统。它可以将来自多个数据源的数据采集到 Hadoop 生态系统中,其中包括 HDFS、HBase、Kafka 等。 下面是一个将本地数据 CSV 文件上传至 MySQL 的 employee 表的 Flume 配置示例: 1. 首先,创建一个名为 `csv_to_mysql.conf` 的 Flume 配置文件,内容如下: ```properties # 定义 Flume agent 名称和组件 csv_to_mysql.sources = csv_source csv_to_mysql.sinks = mysql_sink csv_to_mysql.channels = memory_channel # 配置数据csv_to_mysql.sources.csv_source.type = spooldir csv_to_mysql.sources.csv_source.spoolDir = /path/to/csv/files csv_to_mysql.sources.csv_source.fileHeader = true csv_to_mysql.sources.csv_source.fileSuffix = .csv csv_to_mysql.sources.csv_source.batchSize = 100 # 配置数据传输管道 csv_to_mysql.channels.memory_channel.type = memory csv_to_mysql.channels.memory_channel.capacity = 1000 csv_to_mysql.channels.memory_channel.transactionCapacity = 100 # 配置数据传输目的地 csv_to_mysql.sinks.mysql_sink.type = org.apache.flume.sink.jdbc.JDBCSink csv_to_mysql.sinks.mysql_sink.jdbc.url = jdbc:mysql://localhost:3306/your_database csv_to_mysql.sinks.mysql_sink.jdbc.user = your_username csv_to_mysql.sinks.mysql_sink.jdbc.password = your_password csv_to_mysql.sinks.mysql_sink.jdbc.driver.class = com.mysql.jdbc.Driver csv_to_mysql.sinks.mysql_sink.batchSize = 100 csv_to_mysql.sinks.mysql_sink.channel = memory_channel csv_to_mysql.sinks.mysql_sink.sql = insert into employee (id, name, age, gender) values (?, ?, ?, ?) csv_to_mysql.sinks.mysql_sink.channel = memory_channel ``` 2. 接下来,使用以下命令启动 Flume: ```bash $ bin/flume-ng agent --conf conf --conf-file csv_to_mysql.conf --name csv_to_mysql -Dflume.root.logger=INFO,console ``` 3. 最后,将 CSV 文件复制到 `/path/to/csv/files` 目录中,Flume 将自动将其上传到 MySQL 的 employee 表中。 在上传过程中,Flume 将会读取 CSV 文件中的数据,将其转换为插入语句,然后将其批量提交到 MySQL 数据库中。 注意:在执行此操作之前,请确保已经创建了名为 employee 的表,并正确配置了 MySQL 数据库连接信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值