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是会被框架推断后省略的
Hi
> 通过sql查hbase时,有时查到数据,有时候查不到数据。是不是group操作,会有下游算子 发送撤回消息,导致在delete
> hbase的某条rowkey数据,导致客户端查不到数据?
> 我理解 hbase sink 应该是upsert数据吧。会不会先delete 再put 导致这样的现象 ?
是的,group by 算子会像下游 hbase sink发retract消息,hbase
sink处理retract消息的实现就是先delete再insert,所以去查hbase的时候就会碰到你说的有时查不到的情况。
祝好
Leonard
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