首页 > 解决方案 > 无法从脚本解析 $proc_date

问题描述

我有多个 HQL,下面是一个示例。

位于:/home/ganesh/CopyJobs/hql/

insert into XYZ.exttbl_form_data PARTITION (load_date="$proc_date") select FORM_DATA_ID,FORM_ID,USER_ID,INTERACTIONS_ID,SUBMISSION_DATETIME,FILEDS from PQR.exttbl_form_data where load_date="$proc_date" 

在我阅读上面提到的 HQL 的主脚本中

export proc_date=2018-05-07

while read line
do
export hql=`cat /home/ganesh/CopyJobs/hql/$table_name.hql`

export hql_final=$(`eval echo"$hql"`)
echo "Final HQL: $hql_final"
hive -e "$hql_final;"

done < /home/ganesh/CopyJobs/config/tables.txt 

其中 tables.txt 有所有 HQL 的列表。

我想解决 $proc_date 但是没有发生。

标签: shellhive

解决方案


使用 Hive 变量替换(hiveconf 变量)。我已经稍微修正了你的脚本。

  1. HQL 文件应如下所示: insert into XYZ.exttbl_form_data PARTITION (load_date='${hiveconf:proc_date}') select FORM_DATA_ID,FORM_ID,USER_ID,INTERACTIONS_ID,SUBMISSION_DATETIME,FILEDS from PQR.exttbl_form_data where load_date='${hiveconf:proc_date}'

${hiveconf:proc_date}- 是要传递给 Hive 的变量。

主脚本:

proc_date=2018-05-07

echo "proc_date is $proc_date"

while read line
do
hql_file=/home/ganesh/CopyJobs/hql/"$line".hql

echo "current hql_file is $hql_file"

hive -hiveconf proc_date="$proc_date" -f "$hql_file"

done < /home/ganesh/CopyJobs/config/tables.txt  

推荐阅读