Flink 实战
1.1 需求分析
抽取(extract)、转换(transform)、加载(load)
{
"dt":"2020-08-12 17:19:40",
"countryCode":"SA",
"data":[
{
"type":"s2",
"score":0.1,
"level":"A+"
},
{
"type":"s5",
"score":0.5,
"level":"C"
}
]
}
areass AREA_US US areass AREA_CT TW,HK areass AREA_AR PK,KW,SA areass AREA_IN IN
dt, 区域(亚洲区) ,data[]
{
"area":"AREA_AR",
"dt":"2020-08-12 17:20:25",
"score":0.8,
"level":"C",
"type":"s5"
}
1.2 项目架构
实现思路:
1、产生数据源
2、将区域和国家的对应关系数据进行保存—-Redis
3、通过代码,将redis中的映射关系数据取出,并保存到HashMap中
4、将数据源中的每一条数据发送到Kafka上保存,allData这个Topic
5、通过Flink的消费者Consumer,从allData这个Topic上去拉取数据
6、通过Flink的自定义数据源,从Redis中拉取映射关系的数据
7、在Flink中转化数据源
8、将转化好的数据进行保存 – kafka allDataDone这个topic
分析:
- flume采集数据
- 将flume采集到的数据发送到Kafaka的名为:AllData的Topic上
- 通过flink读取kafka上alldata的数据,进行实时转换
- 数据解析完成后,通过FlinkKafkaProducer将数据写到Kafka的alldataclean中
- 为了后期的离线操作,通过Flume对数据进行分类落盘操作
代码: anli