Hive to StarRocks

本文介绍了如何将Hive数据导入到StarRocks的Broker Load模式,包括不更新历史数据和更新历史数据的场景,以及面对元数据变化时的处理方法。通过shell脚本实现自动化,但在元数据改变时需手动干预,且存在string长度限制问题。
摘要由CSDN通过智能技术生成

将Hive 中的数据导入到 StarRocks 中的Broker Load的导入方式。在Broker Load模式下,通过部署的Broker程序,StarRocks可读取对应数据源(如HDFS, S3)上的数据,利用自身的计算资源对数据进行预处理和导入。这是一种异步的导入方式,用户需要通过MySQL协议创建导入,并通过查看导入命令检查导入结果。有关Broker Load 的详细解释你可以查阅官网的解说。

需求:

每天将数仓中跑完的Hive的相关表导入到StarRocks。

场景:

  • 不更新历史数据

    1. 如果是分区表,我们增量导入到 StarRocks 中即可
    2. 非分区表全量导入
  • 更新历史数据

    这种情况主要存在分区表中,往往会更改前几个月数据或者时间更久的数据,这种情况下,就不的不将该表重新同步一边,使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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值