Я новичок в улье. Может кто-то, пожалуйста, помогите мне с этим требованием?Как удалить разделы из таблицы улей динамически?
Мое требование - динамически удалять разделы. У меня был SQL, который приводит к разным регионам (SQL ниже: после ALTER TABLE FROM
). Теперь я хочу удалить регионы (разделенные в моей таблице hive), которые возвращаются моим SQL.
Я попытался ниже в пути:
ALTER TABLE <TableName> PARTITION(region=tab.region)
FROM
select tab.region from
(SELECT * from Table1) tab join
(select filename from Table2) tab1
on tab1.filename = tab.filename
Это бросание ниже исключение:
'1:21:13 [ALTER - 0 row(s), 0.008 secs] [Error Code: 40000, SQL State: 42000] Error while compiling statement: FAILED: ParseException
line 1:77 cannot recognize input near 'tab' '.' 'region' in constant
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.008/0.000 sec [0 successful, 0 warnings, 1 errors]
Может кто-нибудь помочь мне, пожалуйста?
Заранее спасибо
Спасибо, что ответили. Использование shell-скрипта работает. Но мы запускаем .hql, используя oozie, и выше hql находится в середине большого файла hql. Итак, я имею возможность, если это требование может обрабатываться в hql? без использования сценария оболочки – user2531569
@ user2531569 Я не думаю, что hql может быть такой динамичной. Я боюсь, что у вас будет что-то вроде: вырезать существующий скрипт hql пополам, пусть oozie запустит первую половину, пусть oozie запустит сценарий оболочки, а затем пусть oozie запустит последнюю половину. –
@ user2531569 - Я согласен с Dennis - [вы можете запускать сценарий оболочки из oozie] (https://oozie.apache.org/docs/3.2.0-incubating/DG_ShellActionExtension.html) ** ИЛИ ** вы можете запускать оболочку скрипт из 'hql' - см. мой обновленный ответ на подробности ... –