Starrocks v3.1.3 BROKER LOAD datetime类型会默认添加毫秒位

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述
【背景】做过哪些操作?
【业务影响】
【StarRocks版本】例如:3.1.3
3.1.3 Broker Load ,datetime 类型的数据,原始数据只到秒,load到SR会被默认加毫秒位;insert 不会添加毫秒位:
譬如:原始数据为:image
Load到SR查询数据为:image

我这边在3.1.3版本上没有复现出来,确认下hive 表和 sr表 该字段分别是什么数据类型的

复现流程

1、文件放到hdfs
demo_data.zip (5.3 KB)

2、sr建表
create table if not exists test_table1 (mainid varchar(500),mainid_type varchar(500),testid varchar(100),etl_task_id varchar(100),dt varchar(50),ts datetime,created_at datetime,updated_at datetime,channel varchar(200),test_br array<varchar(200)>,mobile array<varchar(65533)>,sty_age bigint(20),xl_crm_id varchar(65533),zhl_0731_timestamp_01 datetime,xl_name_test varchar(65533),xl_mobile_1 varchar(65533)) DUPLICATE KEY (mainid) COMMENT ‘’ DISTRIBUTED BY HASH(mainid)

3、broker load
LOAD LABEL test_load_5166fee8248443b6b298d254 (DATA INFILE(‘hdfs://*******’) INTO TABLE test_table1 COLUMNS TERMINATED BY ‘’ FORMAT AS ‘csv’ (mainid,mainid_type,testid,etl_task_id,dt,ts,created_at,updated_at,channel,test_br,mobile,sty_age,xl_crm_id,zhl_0731_timestamp_01,xl_name_test,xl_mobile_1) SET(mainid=if(mainid=’’,null,mainid),mainid_type=if(mainid_type=’’,null,mainid_type),testid=if(testid=’’,null,testid),etl_task_id=if(etl_task_id=’’,null,etl_task_id),dt=if(dt=’’,null,dt),ts=if(ts=’’,null,ts),created_at=if(created_at=’’,null,created_at),updated_at=if(updated_at=’’,null,updated_at),channel=if(channel=’’,null,channel),test_br=if(test_br=’’,null,test_br),mobile=if(mobile=’’,null,mobile),sty_age=if(sty_age=’’,null,sty_age),xl_crm_id=if(xl_crm_id=’’,null,xl_crm_id),zhl_0731_timestamp_01=if(zhl_0731_timestamp_01=’’,null,zhl_0731_timestamp_01),xl_name_test=if(xl_name_test=’’,null,xl_name_test),xl_mobile_1=if(xl_mobile_1=’’,null,xl_mobile_1))) WITH BROKER(‘username’ = ‘’,‘password’ = ‘’)PROPERTIES(‘timeout’ = ‘7200’,‘load_mem_limit’=‘6000000000’);

结果:
starrocks 3.1.3-384ba23 复现问题
starrocks 3.1.0-1778465 数据正常

目标字段 zhl_0731_timestamp_01

请帮忙确实是否高版本存在该问题。

hive表时间字段为 string,sr 为datetime

企业微信截图_7531e92a-755e-40a1-b4c0-978d724e4ee7

我在不同环境,相同/不同版本上查询 CURRENT_TIMESTAMP 发现精度不同,请问是否和这个有关,这个精度是否可配置,在文档中未找到相关精度配置。

hive建表语句发一下

日期时间这块目前没有精度可配置,你在mysql命令行再执行一下看看结果,排除mysql客户端的影响。
在3.1版本上,这几个函数时间精度会到微秒 https://github.com/StarRocks/starrocks/pull/25021

1、模型为主键模型,但是插入了两条数据相同key的数据,联合主键中有order_time 且为datetime类型。
2、从图中可以看出,两条数据时间一致,但是用>= 和 = 条件查询出的数据不同。
3、在groupby 的时候却能够合并到一起。

背景:其中一条数据是在3.0.3版本入的。第二条数据是在3.1.3入的。

麻烦帮忙回答一下这个问题,并告知对应解决方案 谢谢

数据是怎么插入的,相同key的 主键模型的话 只会保留一条数据,select md5sum(order_time),md5sum(其他key列) from xxx; 看一下结果返回

是的,我也认为只会保留一条数据,但确实是两条。
数据是直接insert的。


下面的properties 也发一下,有没有开启主键索引持久化,是存算一体的还是存算分离版本的

存算一体

两次 >= 和 = 返回结果不一致的情况,也发一下两条sql 的 explain costs +sql 的结果,和 两次执行的 profile 结果文件

中间有修改过 主键索引落盘么 enable_persistent_index=true

explain result.txt (2.5 KB) profile_file=.txt|attachment (37.1 KB) profile_file>=.txt (38.1 KB)

没有修改过,一直是false;如果修改,会有什么影响?

我们这边尝试模拟下你们的操作看能不能复现,有几个问题需要确认下:

  1. 数据写入是通过 insert into values 的方式写入的么,每次都是只 insert into 这一条key列重复的数据么
  2. 除了这条数据重复,其他同期写入的数据是否有重复
  3. 是直接从 3.0.3升级到 3.1.3么,中间是否有经过其他版本?
  4. 除了升级,其他时候有重启过 leader fe 么
    如果方便的话 是否可以提供下建表和导入语句,可以私信发给我

1、2 我同事私发给您@ U_1697092726993_6107
3.是直接从 3.0.3升级到 3.1.3么,中间是否有经过其他版本?
是直接从 3.0.3升级到 3.1.3,中间没有经过其他版本。升级前,我们是1FE、在此次升级,我们又添加了2个FE,变成了3FE,升级步骤为先启动了2个新增的3.1.3版本的FE,停掉3.0.3的FE,升级3.0.3的FE 到3.1.3,启动升级后的FE,升级过程中,FE leader有变化;
4.除了升级,其他时候有重启过 leader fe 么
除了升级,没有重启过leader FE