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

回复