就是sed 太慢了,把脚本修改了还好,今天应该可以开始往starrocks 导入数据了
是的 他最后还要sed 他把大文件切割成小文件 sed等一下还是能执行完。
如果我用starrocks 官网那个生产数据的话是不是需要按照这个建表呢
https://docs.starrocks.com/zh-cn/latest/benchmarking/TPC-H_Benchmark
/home/disk1/liangchaohua/tpch-poc-0.1.2/benchmark/sql/tpch/ddl_1000/tpch_create.sql
不增减字段,修改一下BUCKETS和colocate join应该可以。
我看数据也没有问题,不知道为啥导入就是第一列就是null
有的就没有问题,好奇怪呢
orders原文件 more一下看看
MySQL [tcph10tmp]> select count(1) from lineitem;
±-----------+
| count(1) |
±-----------+
| 4216474251 |
±-----------+
1 row in set (3.29 sec)
MySQL [tcph10tmp]> select count(1) from lineitem;
±-----------+
| count(1) |
±-----------+
| 4216474251 |
±-----------+
1 row in set (3.03 sec)
d导入42亿条数据count 好像很慢
搞个profile看看
它执行得快是因为数据在内存,可能你还在导入数据,缓存那块有点不足。这个也和统计信息有关,统计信息会把总数也记录的,只要数据没变化查询也快
明天吧,我们把数据全部导入看看
好的 期待期待期待
10T的数据生成的快,就是sed处理 | 慢
把您去掉|程序修改了,应该是快了
#!/bin/bash
多线程执行shell脚本
start_time=date +%s
#定义脚本运行的开始时间
tmp_fifofile="/tmp/$$.fifo"
mkfifo $tmp_fifofile # 新建一个FIFO类型的文件
exec 6<>$tmp_fifofile # 将FD6指向FIFO类型
rm $tmp_fifofile #删也可以,
thread_num=90 # 定义最大线程数
#根据线程总数量设置令牌个数
#事实上就是在fd6中放置了$thread_num个回车符
for ((i=0;i<${thread_num};i++));do
echo
done >&6
for ((i=1;i<=10;i++))
do
read -u6
{
data_dir=$1
if [[ ! -d “${data_dir}” ]];then
echo “[ERROR] data_dir for generated data not specified”
exit 1
fi
for file in $(ls "${data_dir}")
do
file_path=${data_dir}/${file}
echo "[INFO] sed file:${file_path}"
# nohup sed -i 's/|$//g' ${file_path} &
sed -i 's/|$//g' "${file_path}"
done
sleep 1
echo >&6 # 当进程结束以后,再向FD6中加上一个回车符,即补上了read -u6减去的那个
} &
done
wait # 要有wait,等待所有线程结束
stop_time=date +%s
# 定义脚本运行的结束时间
echo “TIME:expr $stop_time - $start_time
” # 输出脚本运行时间
exec 6>&- # 关闭FD6
sed -i ‘s/|$//g’ “${file_path}” 最后|要去掉 生成的时候 如果判断是最后一个值就不生成| 就不用sed过滤了
写shell写得666
下午还请您帮忙在把把关,一起看一下测试的效果,应是还需调整。
数据导入感觉有点慢呢,是不是可以通过调整参数提升一下调整导入效率
同时启动多个导入吧,就是文件通过用stream load导入的。