使用flinksql完成流式处理任务,具体需求如下。
需求描述:
1)自定义kafka主题,使用flink从kafka中读取原油实时售价数据,注册成表;
数据如下
油品种类 价格 时间
LightCrudeOil 100 2020/11/25 09:00:00
MediumCrudeOil 90 2020/11/25 09:00:00
HeavyCrudeOil 78 2020/11/25 09:00:00
MediumCrudeOil 88 2020/11/25 10:45:00
MediumCrudeOil 89 2020/11/25 11:15:00
HeavyCrudeOil 76 2020/11/25 11:49:00
2)自定义kafka主题,从kafka中读取购买原油订单数据,注册成表;
油品种类 购买数量 时间
MediumCrudeOil 2 2020/11/25 10:15:00
LightCrudeOil 1 2020/11/25 10:30:00
HeavyCrudeOil 5 2020/11/25 10:32:00
MediumCrudeOil 3 2020/11/25 10:52:00
LightCrudeOil 6 2020/11/25 11:04:00
3)将kafka偏移量保存在checkpoint中,使用精确一次消费模式;
4)使用将原油实时售价数据注册成Temporal Table的方式进行计算 ;
5)现在要根据订单下单的时间和实时的单价表使用flinksql实时计算出订单的金额,字段包含油品种类、购买数量、订单金额、购买时间;
(例如10点52分的MediumCrudeOil原油价格要遵从10点45分时的价格而不是9点的价格)
6)使用flinksql实时计算MediumCrudeOil下单次数及其总订单金额;
7)将第5问的结果存入Hbase中,表名oilSales,列族f1,字段名自拟;
8)将第6问的结果输出到Kafka的aggSales主题,并查看输出结果。
代码:
import java.text.SimpleDateFormat
import java.util.{Date, Properties}
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.configuration.Configuration
import org.apache.flink.contrib.streaming.state.RocksDBStateBackend
impor