ошибка оболочки скрипта улья - PullRequest
0 голосов
/ 25 мая 2018

Я хочу использовать сценарий оболочки для выполнения некоторых запросов улья.Вот как выглядит моя оболочка скрипта:

#!/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 голосов
/ 25 мая 2018

Попробуйте следующий подход, используя hiveconf (показано с примером):

1) Переместите запрос Hive в файл .hql.Параметры будут указаны с помощью hiveconf.

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

2) Создать сценарий оболочки для установки значений параметров для запроса и его выполнения.

-- query.sh

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

3) Выполнить его

./query.sh
0 голосов
/ 25 мая 2018

Привет, попробуйте, как показано ниже: -

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...