关于实时导入全局字典报错

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述
【背景】做过哪些操作?
【业务影响】
【是否存算分离】
【StarRocks版本】3.2.11
【集群规模】例如:3fe+10be
【机器信息】CPU虚拟核/内存/网卡,例如:48C/64G/万兆
【联系方式】为了在解决问题过程中能及时联系到您获取一些日志信息,请补充下您的联系方式,例如:社区群4-小李或者邮箱,谢谢
【附件】
咨询下我想在实时场景中导入全局字典和明细表数据,基于streamLoad事务的模式做exactly once,逻辑是在明细表导入的流程中,在load环节通过streamLoad模式插入字典数据,再多并行场景下,在明细表prepare阶段会出现multi_get version not match tablet:37167 current_version:324 read_version:323,所以再实时场景中应该怎么导入字典数据和明细表数据,有相关的example嘛

prepare节点报错的tablet属于字典表的tablet,
导入的代码逻辑为:
String label = “flink” + RandomUtil.randomString(8);
String dictLabel = “flink_dict” + RandomUtil.randomString(8);
//开启字典事务
beginTx(dictLabel, “student_dict1”);
//明细表事务
beginTx(label, “student_base”);
//导入字典数据
load(fieldNames, loadUrl, “student_dict1”, value, dictLabel, true);
//导入明细数据
load(fieldNames, loadUrl, “student_base”, value, label, false);
//预提交字典事务
prepareTx(dictLabel);
//提交字典事务
commit(dictLabel);
//预提交明细事务
prepareTx(label);
//提交明细事务
commit(label);

上述代码为字典和明细表都开启事务的情况
以下代码为明细表开事务,字典表不开事务,在多并行度环境下依旧会出现multi_get version not match tablet报错
String label = “flink” + RandomUtil.randomString(8);
String dictLabel = “flink_dict” + RandomUtil.randomString(8);
//明细表事务
beginTx(label, “student_base”);
//streamLoad模式导入字典数据,不开事务
streamLoad(fieldNames, loadUrl, “student_dict1”, value, dictLabel, true);
//导入明细数据
load(fieldNames, loadUrl, “student_base”, value, label, false);
//预提交明细事务
prepareTx(label);
//提交明细事务
commit(label);

@luohaha

我这边也有遇到这个问题。我们这边控制了下字典表的更新频率,来减少version更新不及时的情况。
可能得规划下字典表是否需要高频导入

你这边是单线程导入字典和事实数据的嘛,还是并行操作呢

一个导入任务写字典表, 一个物化视图更新的使用会用到字典表的映射

后面
我们会彻底Fix这个问题,当前版本只能按上面这个同学说的来规避下。

如果是实时场景呢,需要同时导入字典表和明细表的场景怎么解决,只能在sink端开单并行度去运行吗

@trueeyu