hive脚本shell错误

时间:2018-05-25 10:32:40

标签: shell hive hiveql

我想使用shell脚本来执行一些配置单元查询。 这就是我的脚本shell的样子:

#!/bin/bash
DST_ARCHIVE_TABLE=as400_nat_pp09_siedta_raw_dev.natart_archive
SRC_TABLE_HIVE=as400_nat_pp09_siedta_raw_dev.natart_to_process 
current_date=$(date +%Y%m%d%H%M%S)
hive -e 'SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; insert into table ${DST_ARCHIVE_TABLE} partition (to_porcess_ts) select * from ${SRC_TABLE_HIVE} where to_porcess_ts < ${current_date} '

但得到了这个错误:

FAILED: ParseException line 1:19 cannot recognize input near 'table' '$' '{' in table name

我删除了{,但我仍然有同样的错误

2 个答案:

答案 0 :(得分:0)

嗨试试如下: -

echo "SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; insert into table ${DST_ARCHIVE_TABLE} partition (to_porcess_ts) select * from ${SRC_TABLE_HIVE} where to_porcess_ts < ${current_date}" | hive -e 

echo "SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; insert into table ${DST_ARCHIVE_TABLE} partition (to_porcess_ts) select * from ${SRC_TABLE_HIVE} where to_porcess_ts < ${current_date} - e" | hive 

答案 1 :(得分:0)

使用hiveconf(显示示例)尝试以下方法:

1)将Hive查询移动到.hql文件中。参数将通过hiveconf表示。

-- query.hql
select * from ${hiveconf:MY_DB}.${hiveconf:MY_TABLE} limit 1

2)创建一个shell脚本来设置查询的参数值,并执行它。

-- query.sh

#!/bin/bash
hive -hiveconf MY_DB=default -hiveconf MY_TABLE=my_hive_table_name -f query.hql

3)执行它

./query.sh