我想使用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
我删除了{
,但我仍然有同样的错误
答案 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