【详述】
如题所示,我们有一批iot的数据,数据的格式比较简单,但数据量很大,有140多亿:
mysql> select * from stdv2_abas_old_data limit 10;
±-----±--------------±-------+
| name | times | values |
±-----±--------------±-------+
| 17#W | 1525331400000 | 547.42 |
| 17#W | 1525331400000 | 547.42 |
| 17#W | 1525332000000 | 547.42 |
| 17#W | 1525332000000 | 547.42 |
| 17#W | 1525332300000 | 547.42 |
| 17#W | 1525332300000 | 547.42 |
| 17#W | 1525332600000 | 547.42 |
| 17#W | 1525332600000 | 547.42 |
| 17#W | 1525333200000 | 547.42 |
| 17#W | 1525333200000 | 547.42 |
±-----±--------------±-------+
在导出后发现有2个问题:
1.数据导入重复,140亿数据导入,结果有170多亿
2.SQL查询一个大表,内存溢出,后端be挂掉了
【导入/导出方式】
broker load
LOAD LABEL label_tablename
(
DATA INFILE("hdfs://hadoop_hdfs:8020/apps/hive/warehouse/dbname/tablename/*/*")
INTO TABLE tablename
COLUMNS TERMINATED BY "\\x01"
(name, times,`values`)
)
WITH BROKER 'broker1'
(
"username" = "hdfs",
"password" = "hdfs"
)
PROPERTIES
(
"timeout" = "99999"
);
【背景】做过哪些操作?
-
问题1
第一次导入1个小时左右导出失败,此时查询表数据为0;
第二次导入成功,查询数据有很多重复。 -
问题2
基于此表的sql查询语句失败,即使查询limit1也是失败
select name,
DATE_FORMAT(dt,'%Y-%m') month,
LAST_VALUE(`VALUES`) over(partition by name,DATE_FORMAT(dt,'%Y-%m') order by dt desc) last_value
from
(
select name,from_unixtime(times/1000) as dt,`VALUES` from tablename
) a limit 1
【业务影响】
暂时没有
【StarRocks版本】例如:1.19.0
【集群规模】例如:3fe(1 follower+2observer)+5be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:32C/128G/千兆
【附件】
- fe.warn.log/be.warn.log/相应截图
fe.warn.log (979.9 KB)
be.WARNING.log.20211027-101428 (272.2 KB)