StarRocks案例7:使用shell批量broker load导入hdfs数据

一. 问题描述

近期需要进行补录数据,需要将hive的历史数据迁移到StarRocks,因为需要补录的数据较多,hive和StarRocks均使用的是分区表,两边的日期格式也不同,hive这边是 yyyymmdd格式,StarRocks这边是yyyy-mm-dd格式。

二. 解决方案

之前一直是使用DataX来从hive导入到StarRocks,因为DataX是单节点的,而hive和StarRocks是分布式的,所以这个性能其实一般,而且DataX配置json确实有点麻烦。

于是尝试使用StarRocks自带的broker load来进行导入,当然此时可以配合shell脚本来使用。
需要从2023-03-01 一直导入到2023-05-30 近90天的数据

#!/bin/bash
#Author         : 只是甲 at 20230609
#Remarks        : 通过broker load 导入hive 表

# 设置mysql的登录用户名和密码(根据实际情况填写)
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值