[
https://issues.apache.org/jira/browse/FLINK-28910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17601628#comment-17601628
]
Yu Li edited comment on FLINK-28910 at 9/8/22 4:47 AM:
-------------------------------------------------------
>From my point of view, a better solution is to facilitate the atomic
>operations in HBase (Table#checkAndMutate or Table#mutateRow) for the
>update-alike change data ingestion. However, currently Flink's
>`HBaseSinkFunction` takes usage of HBase's `BufferedMutator` and
>`BufferedMutator` only supports `Mutation` (actually
>[currently|https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/BufferedMutator.java#L93-L99]
> only Put and Delete), and operations like `RowMutations` or `CheckAndMuate`
>are not supported. Let me check whether we could do something on the HBase
>side.
cc [~zhangduo]
was (Author: carp84):
>From my point of view, a better solution is to facilitate the atomic
>operations in HBase (Table#checkAndMutate or Table#muateRow) for the
>update-alike change data ingestion. However, currently Flink's
>`HBaseSinkFunction` takes usage of HBase's `BufferedMutator` and
>`BufferedMutator` only supports `Mutation` (actually
>[currently|https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/BufferedMutator.java#L93-L99]
> only Put and Delete), and operations like `RowMutations` or `CheckAndMuate`
>are not supported. Let me check whether we could do something on the HBase
>side.
cc [~zhangduo]
> CDC From Mysql To Hbase Bugs
> ----------------------------
>
> Key: FLINK-28910
> URL: https://issues.apache.org/jira/browse/FLINK-28910
> Project: Flink
> Issue Type: Bug
> Components: Connectors / HBase
> Reporter: TE
> Priority: Major
> Labels: pull-request-available, stale-blocker
>
> I use Flink for CDC from Mysql to Hbase.
> The problem I encountered is that the Mysql record is updated (not deleted),
> but the record in hbase is deleted sometimes.
> I tried to analyze the problem and found the reason as follows:
> The update action of Mysql will be decomposed into delete + insert by Flink.
> The Hbase connector uses a mutator to handle this set of actions.
> However, if the order of these actions is not actively set, the processing of
> the mutator will not guarantee the order of execution.
> Therefore, when the update of Mysql is triggered, it is possible that hbase
> actually performed the actions in the order of put + delete, resulting in the
> data being deleted.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)