Разбор строк в HIVE с помощью Shell - PullRequest
0 голосов
/ 31 октября 2018

У меня есть сценарий оболочки, который я использую для анализа строковой переменной в Hive, чтобы отфильтровать мои наблюдения. Ниже приведен сценарий и код улья.

В следующем скрипте у меня есть переменная со строковым значением, и я пытаюсь разобрать ее в куст, пример ниже:

Сценарий оболочки:

name1='"Maria Nash"' *(I use a single quote first and then a double)*

hive --hiveconf name=${name1} -f t2.hql

Код улья (t2.hql)

create table db.mytable as

SELECT *

FROM db.employees

WHERE emp_name='${hivevar:name}';

Заключение

Чтобы быть точным, создается финальная таблица, но она не содержит никаких наблюдений. Таблица сотрудников содержит наблюдения с именем emp_name "Мария Нэш".

Мне кажется, что я не могу правильно разобрать строку из оболочки или не соблюдает правильный синтаксис того, как мне следует обрабатывать проанализированную переменную в запросе куста.

Буду признателен за вашу помощь!

1 Ответ

0 голосов
/ 31 октября 2018

Использование CLI устарело

вы можете использовать beeline из скрипта оболочки

это должно выглядеть примерно так:

beeline << EOF

!connect jdbc:hive2://host:port/db username password

select * 
from db.employees
where emp_name = "${1}"

EOF

при условии, что $ 1 является вводом из скрипта.

Это пример того, как это сделать, а не производственная реализация. Как правило,

  1. Kerberos будет включен, поэтому имя пользователя и пароль не будут там и действительный токен будет доступен
  2. Проверка входных параметров.

Учитывая, что вы можете сделать это в одной строке

beeline -u jdbc:hive2://hostname:10000  -f {full Path to Script} --hivevar {variable}={value}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...