2016-04-06 7 views
0


У меня есть Hive-запрос в Hue с одной входной переменной, строкой (например, датой типа '20160117').
Я хотел бы выполнить этот запрос Hive в Hue и передать ему несколько значений для этой единственной переменной.
Возможно ли это? Если да, как бы вы, ребята, это сделали?Есть ли способ передать несколько значений одной и той же переменной в задание Hive в Hue?

+1

, пожалуйста, отправьте пример запроса, который вы пытаетесь выполнить. – Jared

+0

В настоящее время вы не можете, вам нужно будет параметризовать запрос, например. $ {date} и отправить его дважды (или использовать координатор Oozie http://gethue.com/hadoop-tutorial-schedule-your-hadoop-jobs-intuitively/) – Romain

ответ

1

Oozie запускает прямые ациклические графики (DAG). А Acyclic сводится к no loop, ever. Но, конечно, есть обходные пути.

Так что, если вы должны запустить тот же сценарий HQL ровно N раз с другим значением параметра ...

  • либо копировать/вставить Улей Действие N раз, в цепи, с другой значение парам (быстрая и грязная)
  • или построить Sub-Workflow с только действием улей и вызвать его N раз, в цепи, с другим значением парам

на о Ther стороны, если вы должны адаптировать динамически количество и значение казней, то вы должны выработать «петлю» логики за пределами Oozie правильного ...

  • , например, начать с действием Shell, что создает пустой HQL-файл, затем добавляет N запросов в цикл, затем загружает файл в HDFS; Далее действие улей, который выполняет сценарий HQL как есть (быстрый и грязный, но не подходит для обработки исключений)
  • или разработать программу Java, которая подключается к HiveServer2 через JDBC, представляет переменная PreparedStatement с 1 привязывать, и выполняет оператор N раз в цикле с разными значениями переменной.

И может быть, когда-нибудь, улей будет поддерживать какой-то процедурный язык, похожий на PL/SQL, T-SQL, PgSQL и т.д., и вы сможете пройти через запятую список значений и обрабатывать его внутри улей.