一. 問(wèn)題描述
近期需要進(jìn)行補(bǔ)錄數(shù)據(jù),需要將hive的歷史數(shù)據(jù)遷移到StarRocks,因?yàn)樾枰a(bǔ)錄的數(shù)據(jù)較多,hive和StarRocks均使用的是分區(qū)表,兩邊的日期格式也不同,hive這邊是 yyyymmdd格式,StarRocks這邊是yyyy-mm-dd格式。
二. 解決方案
之前一直是使用DataX來(lái)從hive導(dǎo)入到StarRocks,因?yàn)镈ataX是單節(jié)點(diǎn)的,而hive和StarRocks是分布式的,所以這個(gè)性能其實(shí)一般,而且DataX配置json確實(shí)有點(diǎn)麻煩。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-501846.html
于是嘗試使用StarRocks自帶的broker load來(lái)進(jìn)行導(dǎo)入,當(dāng)然此時(shí)可以配合shell腳本來(lái)使用。
需要從2023-03-01 一直導(dǎo)入到2023-05-30 近90天的數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-501846.html
#!/bin/bash
#Author : 只是甲 at 20230609
#Remarks : 通過(guò)broker load 導(dǎo)入hive 表
# 設(shè)置mysql的登錄用戶(hù)名和密碼(根據(jù)實(shí)際情況填寫(xiě))
mysql_user="root"
mysql_password="passwd"
mysql_host="ip"
mysql_port="9030"
database_name="db_name"
hive_table=hive_table_name
mpp_table=mpp_table_name
for i in {0..90};
do
dt=`date -d "+$i day 2023-03-01" +%Y%m%d`
startdate=`date -d "+$i day 2023-03-01" +%Y-%m-%d`
echo "########$startdate#########"
mysql -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_password} -D${database_name} << EOF
LOAD LABEL label_${mpp_table}_$dt
(
DATA INFILE("hdfs://ip:8020/hive/warehouse/${hive_table}/dt=${dt}/*")
INTO TABLE ${mpp_table}
FORMAT AS "orc"
(col1, col2, col3, dt)
SET
(
sr_date="$startdate",
col1 = col1,
col2 = col2,
col3 = col3
)
)
WITH BROKER 'broker_1'
(
"hadoop.security.authentication" = "simple",
"username" = "your_username",
"password" = "your_password"
)
PROPERTIES
(
"timeout" = "3600"
);
EOF
done
到了這里,關(guān)于StarRocks案例7:使用shell批量broker load導(dǎo)入hdfs數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!