将Hive 中的数据导入到 StarRocks 中的Broker Load的导入方式。在Broker Load模式下,通过部署的Broker程序,StarRocks可读取对应数据源(如HDFS, S3)上的数据,利用自身的计算资源对数据进行预处理和导入。这是一种异步的导入方式,用户需要通过MySQL协议创建导入,并通过查看导入命令检查导入结果。有关Broker Load 的详细解释你可以查阅官网的解说。
需求:
每天将数仓中跑完的Hive的相关表导入到StarRocks。
场景:
-
不更新历史数据
- 如果是分区表,我们增量导入到 StarRocks 中即可
- 非分区表全量导入
-
更新历史数据
这种情况主要存在分区表中,往往会更改前几个月数据或者时间更久的数据,这种情况下,就不的不将该表重新同步一边,使StarRocks中的数据和hive中的数据保持一致。
-
hive中表的元数据发生变化,和StarRocks中的表结构不一致
这种情况下,就需要我们删除重新建表,重新同步数据
实操
这里直接通过编写shell 脚本,来完成数据的导入
function common(){
database_name=$1
table_name=$2
#判断数据文件格式
hive_file_type=$(echo `impala-shell -i $impala_host -c -q "describe formatted ${database_name}.${table_name};"`)
type=$(echo "${hive_file_type#*InputFormat}" | awk -F \| '{print $2}')
result=$(echo "$type" | grep "parquet")
#这里只判断了两种格式,如果你们hive中的文件类型由多种,你都需要判断
if [[ "$result" != "" ]]
then
hive_file_type="parquet"
echo "file typ