Re: 查询hbase sink结果表,有时查到数据,有时查不到

2020-09-26 文章 Leonard Xu
Hi
> 实际在HBaseSinkFunction中打log测试下来发现,都是UPDATE_AFTER类型的RowData数据写Hbase,没有你说的那种retract消息呢。如果是retract
>  应该是 会先发一条UPDATE_BEFORE 消息,再发一条UPDATE_AFTER消息吧。实际测下来 
> 都是UPDATE_AFTER,转成了hbase的Put操作,就好比每次都是upsert一样。 

HBase Sink 是upsert sink,一条retract消息里的 UPDATE_BEFORE 和 UPDATE_AFTER, 
UPDATE_BEFORE是会被框架推断后省略的,这是upsert sink里的一个小优化,但是upsert 
sink是能收到DELETE消息的,根据query的changlog推导,部分query会产生DELETE消息的,所以upsert sink会处理 
INSERT,UPDATE_AFTER, DELETE三种消息,如果有DELETE消息就会出现查询时刚好被删除的情况。

祝好
Leonard Xu

Re:Re: 查询hbase sink结果表,有时查到数据,有时查不到

2020-09-25 文章 kandy.wang
hi Leonard:

实际在HBaseSinkFunction中打log测试下来发现,都是UPDATE_AFTER类型的RowData数据写Hbase,没有你说的那种retract消息呢。如果是retract
 应该是 会先发一条UPDATE_BEFORE 消息,再发一条UPDATE_AFTER消息吧。实际测下来 
都是UPDATE_AFTER,转成了hbase的Put操作,就好比每次都是upsert一样。





在 2020-09-25 10:03:34,"Leonard Xu"  写道:
>Hi
>> 通过sql查hbase时,有时查到数据,有时候查不到数据。是不是group操作,会有下游算子 发送撤回消息,导致在delete 
>> hbase的某条rowkey数据,导致客户端查不到数据?
>> 我理解 hbase sink 应该是upsert数据吧。会不会先delete 再put 导致这样的现象 ?
>
>是的,group by 算子会像下游 hbase sink发retract消息,hbase 
>sink处理retract消息的实现就是先delete再insert,所以去查hbase的时候就会碰到你说的有时查不到的情况。
>
>祝好
>Leonard


Re: 查询hbase sink结果表,有时查到数据,有时查不到

2020-09-24 文章 Leonard Xu
Hi
> 通过sql查hbase时,有时查到数据,有时候查不到数据。是不是group操作,会有下游算子 发送撤回消息,导致在delete 
> hbase的某条rowkey数据,导致客户端查不到数据?
> 我理解 hbase sink 应该是upsert数据吧。会不会先delete 再put 导致这样的现象 ?

是的,group by 算子会像下游 hbase sink发retract消息,hbase 
sink处理retract消息的实现就是先delete再insert,所以去查hbase的时候就会碰到你说的有时查不到的情况。

祝好
Leonard

Re:查询hbase sink结果表,有时查到数据,有时查不到

2020-09-23 文章 izual
hbase写入时会有buffer [1],按照时间或者数据量写入 [2],可以看下是不是调整过?



1. 
https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-hbase/src/main/java/org/apache/flink/connector/hbase/sink/HBaseSinkFunction.java
2. 
https://ci.apache.org/projects/flink/flink-docs-master/dev/table/connectors/hbase.html
 







在 2020-09-23 17:55:44,"kandy.wang"  写道:
>insert into hive.temp_dw.day_order_index select rowkey, ROW(orderN,)
>from
>(
>select order_date as rowkey,
>count(distinct parent_sn) as orderN,
>
>group by order_date
>)
>
>
>通过sql查hbase时,有时查到数据,有时候查不到数据。是不是group操作,会有下游算子 发送撤回消息,导致在delete 
>hbase的某条rowkey数据,导致客户端查不到数据?
>我理解 hbase sink 应该是upsert数据吧。会不会先delete 再put 导致这样的现象 ?


查询hbase sink结果表,有时查到数据,有时查不到

2020-09-23 文章 kandy.wang
insert into hive.temp_dw.day_order_index select rowkey, ROW(orderN,)
from
(
select order_date as rowkey,
count(distinct parent_sn) as orderN,

group by order_date
)


通过sql查hbase时,有时查到数据,有时候查不到数据。是不是group操作,会有下游算子 发送撤回消息,导致在delete 
hbase的某条rowkey数据,导致客户端查不到数据?
我理解 hbase sink 应该是upsert数据吧。会不会先delete 再put 导致这样的现象 ?