update mode

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
5.1

【概述】 场景 + 问题概述
tispark 写入tidb ,用的以下格式
df.write
.format(“tidb”)
.option(“tidb.user”, “root”)
.option(“tidb.password”, ““)
.option(“database”,”
”)
.option(“table”,“******”)
.mode(“append”)
.save()
【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题
报如下错误:
INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User class threw exception: com.pingcap.tikv.exception.TiBatchWriteException: currently user provided auto increment value is only supported in update mode!
please set parameter replace to true!
请问在哪里设置update mode
【业务影响】

【 TiDB 版本】
5.1
【附件】 相关日志及监控(https://metricstool.pingcap.com/)


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

添加一行配置

.option("replace", "true")

2 个赞

非常感谢,添加这行配置之后,没有提示设置参数 replace to true,但前面的报错依然存在,烦请看看:

.option("replace", "true") 能看下你现在如何加这行配置的么?

能否提供一下 TiSpark 版本?

2.4.0

看起来是一个 bug,我记录一下 issue 之后会修复

嗯嗯,谢谢,另外我这边是在cdh集群上的spark来批写入报错的,后来又尝试了在一个spark standalone环境下,可以成功,配置都一样

我也遇到了一样问题

这个 bug 出现的原因应该和你需要 write 的数据有关。
如果不想触发该 bug,请检查数据

  1. 所有写入的数据的主键在原表中都是存在的。不存在则不是 update mode
  2. 如果有唯一索引,更新的唯一索引不要和其他数据有冲突

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