New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
配置 'connector' = 'kudu' 写入数据异常 #8
Comments
写表应该也无需ddl,创建kudu catalog即可,你试试直接使用kudu catalog插入试试,这个问题以前我们遇到是因为update的原因(先找primary key发现找不到就报这个错误,可以讲kudu版本升到1.12.0,支持了update找不到就忽略的配置,这个我的代码里应该已经兼容了) |
flink-connector-kudu/src/main/java/org/colloh/flink/kudu/connector/internal/writer/KuduWriter.java Line 68 in 678d4bc
|
我也发现这个问题了,但是目前我们集群依赖的CDH6,升级就很难了,也不会让我们轻易升级。 |
这块我们当时使用的是监听binlog,如果binlog数据脏了比如只有update没有insert的就会出现这个问题,我们处理方式只能是暴力的在全量重写采集一下这个表。 |
我现在是把你代码中的 UpsertOperationMapper 中的 createBaseOperation 全部换成了 table.newUpsert(),先全部把Kafka binlog数据加载进来。 请问能否做个兼容低版本的Kudu update |
Lines 131 to 133 in 678d4bc
主要问题应该是这里,使用flink采集的binlog是react stream,会有update before和update after 和insert、delete,我当时想法是kudu是支持主键upsert的所以只考虑了update after的数据,这样出来update before就回去删除,我这里考虑下这里拆分的更细,我去改一下。 |
UpsertOperationMapper这个可以不用懂,因为你用的配置的是connector=kudu,这样只会用我重写的动态数据源,动态数据源使用的是RowDataUpsertOperationMapper这个,这个我改下看看有无问题,不过我这里没办法测试目前,本地没有kudu集群。 |
我就是改的这里面的,你改了后,我可以帮忙测试,我这边可以连公司的集群 |
👌🏻 |
拉下代码吧,可以看下readme,这样改造后存在一些问题,不过delete的场景应该不多,个人建议还是升级kudu合适一些。 |
注意使用tag: v.1.0.0版本 |
我用 tagv1.0.0 打包后,还是出现 status=Not found: key not found (error 0) |
flink-connector-kudu/src/main/java/org/colloh/flink/kudu/connector/internal/writer/KuduWriter.java Lines 109 to 124 in baf2188
这块debug下看看,not key我理解只会存在在删除的情况下,我删除回去根据组件scanner一次,如果差不多就不会删除理论上不会有not key问题了。 |
我进行如下配置,不能写入数据:
'connector' = 'kudu',
'kudu.masters' = 'xxx1,xxx2,xxx3',
'kudu.table' = 'impala::g2link_stream.kudu_g2park_inout_record',
'kudu.hash-columns' = 'park_code',
'kudu.primary-key-columns' = 'inout_id'
异常如下:
Row error for primary key="1704794203843944449", tablet=null, server=32df83c9ff4a472cb5f0d0abaf1c3c56, status=Not found: key not found (error 0)
Row error for primary key="1704794203843944449", tablet=null, server=32df83c9ff4a472cb5f0d0abaf1c3c56, status=Not found: key not found (error 0)
The text was updated successfully, but these errors were encountered: