StreamLoad 导入数据失败报错: Error: Value count does not match column count. Expect 35, but got 69.

【详述】 Java 查询 MySQL,再使用 Streamload 的方式往 Starrocks 写数据,每批次写几万条数据,经常遇到 19998 条成功, 1 条失败(不管导入多少条数据,都是有一条数据失败) Error: Value count does not match column count. Expect 35, but got 69 的报错,实际上这是 2 条数据,并且行分隔符在 报错信息中可以看到
测试步骤:
1、准备一张 200 万数据的表


2、创建三张和源表一个字段的表,分别是唯一、主键、明细模型(表结构见文后)
3、一个 Java 程序,读取这 200 万数据,以 streamload 的方式往 步骤2 创建的表写入数据,设定一个批次导入 2 万条数据,反复执行

测试结果:
三种模型下,都会随机的触发该问题
错误数据也是随机,但都是导入的一个批次中,有一条错误
一个批次导入数据量越大,越容易出现问题

【背景】Java 读取数据库数据,streamload 写入 Starrocks
【业务影响】
【StarRocks版本】2.4.3/2.5.3
【集群规模】5fe(3 follower+2observer)+6be(独立部署)
【机器信息】16c 64G
【表模型】唯一、主键、明细模型均有此问题
【导入或者导出方式】 streamload
【联系方式】社区6群-春江
【附件】
streamload 返回信息:



报错信息:

源表、目标表表结构(主键、唯一、明细三种模型都一样)

CREATE TABLE t_starrocks_load_error_3 (
  `id` bigint(20)                           ,
  `reversion` int(11)                       ,
  `is_deleted` tinyint(4)                   ,
  `created_by` varchar(65533)               ,
  `created_time` datetime                   ,
  `updated_by` varchar(65533)               ,
  `updated_time` datetime                   ,
  `member_id` bigint(20)                    ,
  `member_name` varchar(65533)              ,
  `change_type` int(11)                     ,
  `before_point` int(11)                    ,
  `change_point` int(11)                    ,
  `now_point` int(11)                       ,
  `effective_time` datetime                 ,
  `expire_time` datetime                    ,
  `expire_notice_time` datetime             ,
  `remark` varchar(65533)                   ,
  `from_type` smallint(6)                   ,
  `from_point_id` bigint(20)                ,
  `from_point_name` varchar(65533)          ,
  `status` int(11)                          ,
  `point_item_id` bigint(20)                ,
  `expire_notice_status` int(11)            ,
  `cac_id` varchar(65533)                   ,
  `operator_log_id` bigint(20)              ,
  `change_notice_status` int(11)            ,
  `change_notice_time` datetime             ,
  `in_out` bigint(20)                       ,
  `use_num` int(11)                         ,
  `expire_num` int(11)                      ,
  `bz_id` varchar(65533)                    ,
  `rule_class_code` varchar(65533)          ,
  `rule_code` varchar(65533)                ,
  `member_code` varchar(65533)              ,
  `mobile` varchar(65533)                   
)  
duplicate KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10 
PROPERTIES (
"replication_num" = "3",
"in_memory" = "false",
"storage_format" = "DEFAULT",
"enable_persistent_index" = "true",
"compression" = "LZ4"
);

有某些数据分隔符不一样,可以用max_filter_ratio把这部分数据过滤掉

看起来不是分隔符的问题,对同一份数据我试过几个分隔符(\x02 \u001 \n ^u002^),都有一样的问题;
max_filter_ratio 不能用,会丢数据。。

实测,flink connector 也有同样的问题
任务配置:


导入报错:

错误明细:

您用更简单的文本测试就ok了。不要那么多特殊字符。

不是测试,是生产遇到了,所以拿 flink connector 也验证了一下,发现有同样的问题

特殊字符就 \x01 列分隔符, \x02 列分隔符

特殊字符就 \x01 列分隔符, \x02 列分隔符,测试不生效!用如下方式,数据又会有丢失:“loadProps”: {
“format”: “json”,
“strip_outer_array”: true
},请问你们是怎么处理的?

json 不用分隔符;没遇到过数据丢失的情况,检查下导入程序吧

json 没用分隔符,但是数有丢失。csv用了分隔符,但是没生效,导数还是报错。导入程序没问题的,数据中没有分隔符的表,导入是没问题的