Hi Jark
    
    
非常感谢你提供的方案,我不了解udtf加载完后是一种什么情况,是每一个task都会维护一份hive数据吗?这应该会带来很大的开销。还有一个问题就是1.9中的维表join是不是跟现在一样呢?有什么特别的地方吗?


在2019年8月28日 10:10,Jark Wu<imj...@gmail.com> 写道:
Hi,

看了你的问题,主要有两个问题。
1. join hive 维表,没加载完就有 join 输出了。
2. hive 加载完后,就不再做 checkpoint 了。

第一个问题,目前flink 还没有内置支持hive 维表的支持。你可以自己实现一个 udtf 去拉取 hive 数据到内存,udtf 的 eval 
方法在加载完 hive 数据之前不返回,这样可以避免没有加载完就有输出的问题。
第二个问题,目前 streaming job 中如果存在 finish vertex,是无法做 checkpoint 的。


Best,
Jark



在 2019年8月27日,17:41,like <likeg...@163.com> 写道:

我通过hive union 
kafka数据来解决hive数据不更新的问题,我现在碰到的问题是hive没有加载完就开始有join数据输出,比如我取最大日期,hive读取到26号就输出了26,过一会读取到27号,又会输出27,有没有办法让hive全部加载完再join输出,这样就只会有一个值输出了?


在2019年8月27日 17:33,苏 欣<sean...@live.com> 写道:
我之前试过两种方式,但都有各自的问题:
1.注册hiveCatalog然后关联kafka,这种方式会存在hive表数据读取一次后不再更新的问题。
2.实现LookupableTableSource方法,通过jdbc方式读取hive维表来关联kafka,但是这种方式可以做到实时加载hive数据,但是效率比较低,尤其是读取数据量较大的hive表时。

________________________________
sean...@live.com

发件人: like<mailto:likeg...@163.com>
发送时间: 2019-08-27 17:15
收件人: user-zh@flink.apache.org<mailto:user-zh@flink.apache.org>
主题: kafka流与hive表join问题
请问一下各位大佬,如何保证先加载完hive表,然后再与流join,我发现在hive还没有加载完就已经有join的结果出来,这样刚开始出来的结果是不准确的,还有一个问题是hive表加载完之后不会再做checkpoint?我目前使用的是1.7.1版本,看了1.9的维表join,blink文档说(必须加上FOR
 SYSTEM_TIME AS OF 
PROCTIME(),表示JOIN维表当前时刻所看到的每条数据),这也就意味着跟我现在一样,没有加载完hive就会join输出了?




回复