请问一下各位大佬,如何保证先加载完hive表,然后再与流join,我发现在hive还没有加载完就已经有join的结果出来,这样刚开始出来的结果是不准确的,还有一个问题是hive表加载完之后不会再做checkpoint?我目前使用的是1.7.1版本,看了1.9的维表join,blink文档说(必须加上FOR SYSTEM_TIME AS OF PROCTIME(),表示JOIN维表当前时刻所看到的每条数据),这也就意味着跟我现在一样,没有加载完hive就会join输出了?
|
你是怎么join hive表的,能share你的代码吗?
like <[hidden email]> 于2019年8月27日周二 下午5:15写道: > 请问一下各位大佬,如何保证先加载完hive表,然后再与流join,我发现在hive还没有加载完就已经有join的结果出来,这样刚开始出来的结果是不准确的,还有一个问题是hive表加载完之后不会再做checkpoint?我目前使用的是1.7.1版本,看了1.9的维表join,blink文档说(必须加上FOR > SYSTEM_TIME AS OF > PROCTIME(),表示JOIN维表当前时刻所看到的每条数据),这也就意味着跟我现在一样,没有加载完hive就会join输出了? > > > > -- Best Regards Jeff Zhang |
我通过HCatInputFormat读取了hive的数据注册了一张表,然后读取kafka的数据也注册了一张表,join就是通过sql写的,没有什么代码逻辑呢。
| | like | | [hidden email] | 签名由网易邮箱大师定制 在2019年8月27日 17:17,Jeff Zhang<[hidden email]> 写道: 你是怎么join hive表的,能share你的代码吗? like <[hidden email]> 于2019年8月27日周二 下午5:15写道: 请问一下各位大佬,如何保证先加载完hive表,然后再与流join,我发现在hive还没有加载完就已经有join的结果出来,这样刚开始出来的结果是不准确的,还有一个问题是hive表加载完之后不会再做checkpoint?我目前使用的是1.7.1版本,看了1.9的维表join,blink文档说(必须加上FOR SYSTEM_TIME AS OF PROCTIME(),表示JOIN维表当前时刻所看到的每条数据),这也就意味着跟我现在一样,没有加载完hive就会join输出了? -- Best Regards Jeff Zhang |
In reply to this post by like
我之前试过两种方式,但都有各自的问题:
1.注册hiveCatalog然后关联kafka,这种方式会存在hive表数据读取一次后不再更新的问题。 2.实现LookupableTableSource方法,通过jdbc方式读取hive维表来关联kafka,但是这种方式可以做到实时加载hive数据,但是效率比较低,尤其是读取数据量较大的hive表时。 ________________________________ [hidden email] 发件人: like<mailto:[hidden email]> 发送时间: 2019-08-27 17:15 收件人: [hidden email]<mailto:[hidden email]> 主题: 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输出了? |
我通过hive union kafka数据来解决hive数据不更新的问题,我现在碰到的问题是hive没有加载完就开始有join数据输出,比如我取最大日期,hive读取到26号就输出了26,过一会读取到27号,又会输出27,有没有办法让hive全部加载完再join输出,这样就只会有一个值输出了?
在2019年8月27日 17:33,苏 欣<[hidden email]> 写道: 我之前试过两种方式,但都有各自的问题: 1.注册hiveCatalog然后关联kafka,这种方式会存在hive表数据读取一次后不再更新的问题。 2.实现LookupableTableSource方法,通过jdbc方式读取hive维表来关联kafka,但是这种方式可以做到实时加载hive数据,但是效率比较低,尤其是读取数据量较大的hive表时。 ________________________________ [hidden email] 发件人: like<mailto:[hidden email]> 发送时间: 2019-08-27 17:15 收件人: [hidden email]<mailto:[hidden email]> 主题: 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输出了? |
Administrator
|
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 <[hidden email]> 写道: > > 我通过hive union kafka数据来解决hive数据不更新的问题,我现在碰到的问题是hive没有加载完就开始有join数据输出,比如我取最大日期,hive读取到26号就输出了26,过一会读取到27号,又会输出27,有没有办法让hive全部加载完再join输出,这样就只会有一个值输出了? > > > 在2019年8月27日 17:33,苏 欣<[hidden email]> 写道: > 我之前试过两种方式,但都有各自的问题: > 1.注册hiveCatalog然后关联kafka,这种方式会存在hive表数据读取一次后不再更新的问题。 > 2.实现LookupableTableSource方法,通过jdbc方式读取hive维表来关联kafka,但是这种方式可以做到实时加载hive数据,但是效率比较低,尤其是读取数据量较大的hive表时。 > > ________________________________ > [hidden email] > > 发件人: like<mailto:[hidden email]> > 发送时间: 2019-08-27 17:15 > 收件人: [hidden email]<mailto:[hidden email]> > 主题: 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输出了? > > > |
Hi Jark
非常感谢你提供的方案,我不了解udtf加载完后是一种什么情况,是每一个task都会维护一份hive数据吗?这应该会带来很大的开销。还有一个问题就是1.9中的维表join是不是跟现在一样呢?有什么特别的地方吗? 在2019年8月28日 10:10,Jark Wu<[hidden email]> 写道: 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 <[hidden email]> 写道: 我通过hive union kafka数据来解决hive数据不更新的问题,我现在碰到的问题是hive没有加载完就开始有join数据输出,比如我取最大日期,hive读取到26号就输出了26,过一会读取到27号,又会输出27,有没有办法让hive全部加载完再join输出,这样就只会有一个值输出了? 在2019年8月27日 17:33,苏 欣<[hidden email]> 写道: 我之前试过两种方式,但都有各自的问题: 1.注册hiveCatalog然后关联kafka,这种方式会存在hive表数据读取一次后不再更新的问题。 2.实现LookupableTableSource方法,通过jdbc方式读取hive维表来关联kafka,但是这种方式可以做到实时加载hive数据,但是效率比较低,尤其是读取数据量较大的hive表时。 ________________________________ [hidden email] 发件人: like<mailto:[hidden email]> 发送时间: 2019-08-27 17:15 收件人: [hidden email]<mailto:[hidden email]> 主题: 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输出了? |
Administrator
|
Hi like,
> udtf加载完后是一种什么情况,是每一个task都会维护一份hive数据吗? 是的 > 还有一个问题就是1.9中的维表join是不是跟现在一样呢?有什么特别的地方吗? 1.9 中支持的维表 join,只支持 lookup 方式查询维表,其实现方式和 UDTF 是类似的。 Best, Jark > 在 2019年8月28日,10:57,like <[hidden email]> 写道: > > Hi Jark > > 非常感谢你提供的方案,我不了解udtf加载完后是一种什么情况,是每一个task都会维护一份hive数据吗?这应该会带来很大的开销。还有一个问题就是1.9中的维表join是不是跟现在一样呢?有什么特别的地方吗? > > > 在2019年8月28日 10:10,Jark Wu<[hidden email]> 写道: > 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 <[hidden email]> 写道: > > 我通过hive union kafka数据来解决hive数据不更新的问题,我现在碰到的问题是hive没有加载完就开始有join数据输出,比如我取最大日期,hive读取到26号就输出了26,过一会读取到27号,又会输出27,有没有办法让hive全部加载完再join输出,这样就只会有一个值输出了? > > > 在2019年8月27日 17:33,苏 欣<[hidden email]> 写道: > 我之前试过两种方式,但都有各自的问题: > 1.注册hiveCatalog然后关联kafka,这种方式会存在hive表数据读取一次后不再更新的问题。 > 2.实现LookupableTableSource方法,通过jdbc方式读取hive维表来关联kafka,但是这种方式可以做到实时加载hive数据,但是效率比较低,尤其是读取数据量较大的hive表时。 > > ________________________________ > [hidden email] > > 发件人: like<mailto:[hidden email]> > 发送时间: 2019-08-27 17:15 > 收件人: [hidden email]<mailto:[hidden email]> > 主题: 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输出了? > > > > |
Free forum by Nabble | Edit this page |