在liunx中执行hql文件并传参

hql文件执行

使用shell脚本,根据时间区间遍历执行hql文件

hql脚本

脚本名:test.hql

SET hivevar:newDay;

INSERT OVERWRITE TABLE dwd.a partition(ss_dt="${hivevar:newDay}")
select loan_number,card_id,name,loan_contract_num,loan_date,loan_amt
   from ods.a
where ss_dt="${hivevar:newDay}";

手动在hive外执行hql脚本并传参:

hive --hivevar newDay=20230426 -f ./test.hql

不可以使用 -hiveconf newDay=20230426方式传参,会出现表分区错误,出现分区ss_dt=“$%7BnewDay}”,删除分区代码为

alter table dwd.test drop if exists partition(ss_dt="${newDay}");
# 查看表分区
show partitions dwd.test;

注意:"${newDay}"的引号必须为双引号
参考网址:hive 分区含特殊符号 $%删除方式

shell脚本run.sh

#!bin/bash
 #声明i为数值
 declare -i i=0
    for (( i=0; i<=21; i++ ))
    do
    # 起始时间
    dt="20221124"
    # 循环一次往前加一天
    ydy_dt=$(date -d "$dt +$i day" +"%Y%m%d")
    echo hive -hiveconf newDay=$ydy_dt -f ./test.hql
    hive --hivevar newDay=$ydy_dt -f ./test.hql
    done

间隔天数可以在hive中求得

SELECT datediff("2022-11-24","2023-01-04");

执行shell脚本

bash ./run.sh

如果时间间隔过长,可以多开几个窗口,分配时间段并行执行shell脚本

参考内容:
1:Hive的hql命令的三种执行方式
2:shell脚本语言(超全超详细)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值