Deal All,

*【业务场景】*

step1:Flink消费kafka,将消息进行加工处理,每半个小时要生成一次增量数据,然后将这半个小时的数据写到HDFS的一个orc文件
step2:将上一步flink
Job写到hdfs的文件load到hive表,然后和全量数据(hive表)进行Join,将Join后的结果根据某个字段进行group
by,再写入到几张结构相同的hive表。执行完后将增量文件删除

*【存在的问题】*

1. 上面的两步分别要维护两套代码,开发和维护都比较麻烦

2.
第二步依赖于hadoop做MapReduce,增量和全量Join速度较慢,且资源占用较大,而且当第二步运行时,如果没有资源,将无法在半个小时内生成Join结果,那么就没有及时删除增量文件,导致第一步Flink
job会连续生成多个增量文件,等到Join的MapReduce
job有资源后,需要将多个增量文件merge,再与全量Join,这样以来整个过程又被拖慢。
3. 时效性不好,本身是一个整体,被拆成两步,存在job累加,得等上一步flink job
hdfs写入完成了,下一个定时Job才能正常运行,让原有的实时性效果变差

【请教】

能否把上面两步合二为一?该场景应该也算是流批同时存在的业务,Flink 的“流批一体”,能否实现?

由于第一步中的Flink Job的执行环境是StreamExecutionEnvironment ,如果用Flink
SQL去运行增量和全量的Join,那就是另外的TableEnvironment了,我不太清楚怎么在同一个Job去构建这两种环境,以及,Join后要写入几张不同的hive表,必然会运行多个sql语句,我看到的一些demo
都是一次跑一个sql语句,那么这种需求是可以实现的吗?



-----
Thanks!
Jacob
--
Sent from: http://apache-flink.147419.n8.nabble.com/

回复