使用TiBigData的Flink-TiDB-Connector写tidb的时tikv.sink.buffer-size不生效

我在使用TiBigData的Flink-TiDB-Connector过程中遇到一个问题:
1、【环境】
flink-tidb-connector-1.14
tidb 6.5.0
flink 1.14.3
2、【SQL】:

SET ‘execution.runtime-mode’ = ‘batch’;
SET ‘pipeline.name’ = ‘test’;
SET ‘yarn.application.name’ = ‘test’;

CREATE CATALOG mytidb
WITH (
‘type’ = ‘tidb’,
‘tidb.database.url’ = ‘jdbc:tidb://10.0.44.83:3390/its_sjzt_jg?useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSqlLimit=1024&prepStmtCacheSize=128&rewriteBatchedStatements=true&allowMultiQueries=true&useConfigs=maxPerformance’,
‘tidb.username’ = ‘xxxx’,
‘tidb.password’ = ‘xxxx’,
‘sink.max-retries’ = ‘8’,
‘tidb.sink.impl’ = ‘tikv’,
‘tikv.sink.transaction’ = ‘minibatch’,
‘tikv.sink.buffer-size’ = ‘4096’,
‘tikv.sink.deduplicate’ = ‘false’
);

3、【出现的问题】:

写入数据时特别慢,需要几个小时,排查发现PRE_WRITE阶段tikv.sink.buffer-size没有生效,依然是1条数据提交一次事物,详见下图:


在使用 TiBigData 的 Flink-TiDB-Connector 写 TiDB 时,如果 tikv.sink.buffer-size 参数不生效,可能是由于以下原因导致的:

  1. 参数名称错误:在 Flink-TiDB-Connector 中,tikv.sink.buffer-size 参数应该是 sink.buffer-flush.max-rows 参数的别名。如果使用了错误的参数名称,可能会导致参数不生效。

  2. 参数值不合法:sink.buffer-flush.max-rows 参数的值应该是一个正整数,表示每次提交的批大小。如果参数值不合法,可能会导致参数不生效。

  3. 参数未正确设置:在 Flink-TiDB-Connector 中,sink.buffer-flush.max-rows 参数可以通过以下方式进行设置:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
    tableEnv.getConfig().getConfiguration().setInteger("sink.buffer-flush.max-rows", 1000);
    

    如果参数未正确设置,可能会导致参数不生效。

为了解决该问题,可以先检查参数名称是否正确,然后检查参数值是否合法,最后检查参数是否正确设置。如果问题仍然存在,可以提供更多的信息,例如代码片段、日志信息等,以便更好地帮助您解决问题。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。