Shell调用Hive传参、回传并处理海量数据分区脚本实践

手里的两个项目有一个从需求提出到开发完成用了约一周多时间,昨晚刚刚收尾,另一个大数据的仍然在推进。

这个大数据的项目有一个环节是通过BDI做对海量数据进行离线统计处理,这个BDI ETL工具是轻量级的,在处理HIVE时只能通过SHELL或者Python脚本调用,BDI合作伙伴只有数据异构的脚本案例,没有海量数据进行分库统计的脚本案例。

先度娘了一下,发现互联网上对于Shell调用Hive传参、回传并处理海量数据分区的综合脚本案例基本没有,现写一个,给大家参考。

#!/usr/bin/env bash

HIVE_HOME="C:/apache-hive-2.3.5-bin"

#项目是离线数据处理,今天拿到的是隔天的数据,先把时间变量设置好,亦HQL的入参
iv_date="`date -d "1 days ago" +%Y%m%d`"

iv_mon=${iv_date:0:6}
#echo $iv_mon;
iv_year=${iv_date:0:4}
#echo $iv_year;

#设置hive变量,处理hql
cd $HIVE_HOME

bin/hive -e "select count(1) from ods.to_order_custom_portrait_d tod where tod.statis_date = ${hivevar:iv_date};"

#处理返回参数
rtstatus=$?
echo $rtstatus
if [ $rtstatus -lt 1 ]; then
    echo "to_order_custom_portrait_d表数据不存在!"
    exit $rtstatus
fi

#处理多个入参,到hql脚本
bin/hive -hivevar iv_date=$iv_date -hivevar iv_mon=$iv_mon -hivevar iv_year=$iv_year -f 'tw_order_custom_portrait_d.hql'

#处理返回参数
exitCode=$?
if [ $exitCode -ne 0 ];then
     echo "[ERROR] hive execute failed!"
     exit $exitCode
fi

tw_order_custom_portrait_d.hql内容:

insert overwrite table dw.tw_order_custom_portrait_d partition(statis_year='${hivevar:iv_year}', statis_month='${hivevar:iv_mon}', statis_date = '${hivevar:iv_date}') select tod.product_type, tod.package_level from ods.to_order_custom_portrait_d tod where tod.statis_date = ${hivevar:iv_date};

发布了27 篇原创文章 · 获赞 17 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/pharos/article/details/90705519
今日推荐