我正在尝试使用一些参数以批处理模式执行Hive文件(.hql),如下所示:
hive -hiveconf in_co_societe = 1 in_dt_jour = '2013-01-02 00:00:00.0' -f /home/hduser/Documents/P_THM_CA_RGRP_PRODUITS_JOUR.hql
在我的剧本中,我有这样的论据
'${hiveconf:in_co_societe}'
'${hiveconf:in_dt_jour}'
我的脚本正在执行INSERT INTO ... SELECT ... FROM。
当我提供参数时,没有任何内容导入到目标表中。
但是,当我直接在脚本中写入值时,一切正常,数据将被导入。
那么,我的论点有什么问题?
谢谢,
答案 0 :(得分:0)
'='周围没有空格,每个变量都需要-hiveconf
hive -hiveconf in_co_societe=1 -hiveconf in_dt_jour='2013-01-02 00:00:00.0'
-f /home/hduser/Documents/P_THM_CA_RGRP_PRODUITS_JOUR.hql
答案 1 :(得分:0)
query = sudo -u #$sudo_user# -i bsub -I /opt/ibm/biginsights/hive/bin/hive -hiveconf Loop_Param='#StartLoop_Activity_312.$Counter#' -f /opt/site1/data/EDW/Finance/Scripts/hqlFiles/VNDR_ITEM_F/OP_UNION.sql
; echo $ query
一些适用于我的示例语法
答案 2 :(得分:0)
为了使这个过程更加通用,Hive允许您使用-hiveconf选项传入变量
hive -hiveconf MY_VAR1=value1 -hiveconf MY_VAR2=value2 -f my_script.hql
在HQL文件中,它的使用方式如下:
show databases;
show tables;
set dfs.block.size=${hiveconf:MY_ VAR1};
select * from ${hiveconf:MY_ VAR2} limit 2;
you can put them within a .sh file and it can be execute as:
sh my_script.sh