kafka流与hive表join问题

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

kafka流与hive表join问题

like
请问一下各位大佬,如何保证先加载完hive表,然后再与流join,我发现在hive还没有加载完就已经有join的结果出来,这样刚开始出来的结果是不准确的,还有一个问题是hive表加载完之后不会再做checkpoint?我目前使用的是1.7.1版本,看了1.9的维表join,blink文档说(必须加上FOR SYSTEM_TIME AS OF PROCTIME(),表示JOIN维表当前时刻所看到的每条数据),这也就意味着跟我现在一样,没有加载完hive就会join输出了?



Reply | Threaded
Open this post in threaded view
|

Re: kafka流与hive表join问题

Jeff Zhang
你是怎么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
Reply | Threaded
Open this post in threaded view
|

回复: kafka流与hive表join问题

like
我通过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
Reply | Threaded
Open this post in threaded view
|

Re: kafka流与hive表join问题

苏 欣
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输出了?



Reply | Threaded
Open this post in threaded view
|

回复: kafka流与hive表join问题

like
我通过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输出了?



Reply | Threaded
Open this post in threaded view
|

Re: kafka流与hive表join问题

Jark
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输出了?
>
>
>

Reply | Threaded
Open this post in threaded view
|

回复: kafka流与hive表join问题

like
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输出了?




Reply | Threaded
Open this post in threaded view
|

Re: kafka流与hive表join问题

Jark
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输出了?
>
>
>
>