hive传参:1个shell +1个hql 脚本说明白hive传参

概括:

定义
1.可以在hql脚本里面直接定义变量 使用 set var-name = var-value的方式,
2.也可以在shell脚本中 通过 hive -hiveconf var-name = var-value 的方式在准备执行语句/文件时直接指定。

调用
调用时都是${hiveconf:var-name}的形式调用,注意如果是字符型要在外面加单引号。

区别
区别在于使用场景:

可以将在hql脚本中常用到一些常量定义在hql脚本里面,
一来可以保证需要改变时,可以一下改变,二来跟一些经常改变的变量区分开;

另一方面,一些需要经常改变的量可以封装在外层的shell脚本里面,
方便在shell脚本里面根据逻辑改变赋值。

举例

hql脚本 test1.hql

set num = 888;--可以将在hql脚本中常用到一些常量定义在hql脚本里面,
--一来可以保证需要改变时,可以一下改变,二来跟一些经常改变的变量区分开

select 'Starting running hql-scripts';

select '${hiveconf:day}','${hiveconf:line}',${hiveconf:num};

select 'Ending of the scripts';


shell脚本 test1.sh

#!/bin/bash
day=`date -d '-1 day' +%F` #而一些需要经常改变的量可以封装在外层的shell脚本里面
line='fantanstic baby!' #方面在shell脚本里面根据逻辑改变赋值
hive -hiveconf day=${day} -hiveconf line=${line} -S -f test1.hql

执行结果:
在这里插入图片描述
本文参考:hive执行脚本时传参

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读