Flink实战之网站日志ETL案例【含代码】

问题导读

1.怎样对字段进行大区转换?
2.怎样拆分打平大JSON?
3.怎样把不同类型的日志数据分别进行存储?

应用场景:

  • 数据清洗【实时ETL】

  • 数据报表


1、数据清洗【实时ETL】



1.1、需求分析

针对算法产生的日志数据进行清洗拆分

  • 算法产生的日志数据是嵌套大JSON格式(json嵌套json),需要拆分打平

  • 针对算法中的国家字段进行大区转换

  • 最后把不同类型的日志数据分别进行存储



1.2、数据清理 DataClean 结构



1.3、实践运行

1.3.1、Redis

启动redis:

先从一个终端启动redis服务

./redis-server
复制代码




先从一个终端启动redis客户端,并插入数据

./redis-cli

127.0.0.1:6379> hset areas   AREA_US   US

(integer) 1

127.0.0.1:6379> hset areas   AREA_CT   TW,HK

(integer) 1

127.0.0.1:6379> hset areas   AREA_AR   PK,SA,KW

(integer) 1

127.0.0.1:6379> hset areas   AREA_IN   IN

(integer) 1

127.0.0.1:6379>
复制代码


1.3.2、Kafka

启动kafka:

./kafka-server-start.sh -daemon ../config/server.properties

复制代码


kafka创建topc:

./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic allData

复制代码


监控kafka topic:

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic allDataClean

复制代码





1.3.3、启动程序

先启动 DataClean 程序,再启动生产者程序,kafka生产者产生数据如下:



最后终端观察处理输出的数据:



只有部分数据正确处理输出的原因是:代码中没有设置并行度,默认是按机器CPU核数跑的,这里需要通过 broadcast() 进行广播

1.4、Flink yarn集群启动

向yarn提交任务:

./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -c henry.flink.DataClean /root/flinkCode/DataClean-1.0-SNAPSHOT-jar-with-dependencies.jar

复制代码


通过 yarn UI 查看任务,并进入Flink job:



启动kafka生产者:



监控topic消费情况:

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic allDataClean

复制代码


最终终端输出结果, 同IDEA中运行结果:




代码下载:
链接: 

https://pan.baidu.com/s/1993ZK-xOKbhmhzLLLyi8Ww 

提取码: pumu

----------------------------END----------------------------

如果你也是大数据、人工智能爱好者,加微信领书100本大数据、人工智能、区块链等精选书籍,还可以加讨论群交流。

 本公众号精彩文章推荐:

【1】数据中台到底如何落地实现含架构图及代码

【2】基于Flink商品实时推荐系统项目大数据及算法

【3】ES学习精品系列文章汇总及下载

【4】About云VIP黄金会员

【5】Shell大全:可以应用于工作及面试

【6】About云 VIP总结【2019年】

【7】大数据实用组件Hudi

【8】数据治理:白话打通对Atlas的理解

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值