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/
