Как автоматизировать извлечение данных из Hive на рабочий стол Windows? - PullRequest
0 голосов
/ 01 сентября 2018

Мне нужно войти на хост Linux Bastion, затем запустить kinit и beeline, используя pbrun, затем файл sftp csv в Windows.

Пример запроса:

"ВЫБРАТЬ * ИЗ БД, таблица ГДЕ id> 100"

Есть ли скрипт или инструмент Python для автоматизации этого?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Я хочу опубликовать свои выводы. Самым сложным было выяснить, что ожидать + pbrun. Поскольку есть 2 интерактивных вопроса, мне пришлось остановиться на секунду после первого вопроса.

Мой expect код:

#!/usr/bin/expect -f
set timeout 300
set usr [lindex $argv 0];
set pwd [lindex $argv 1];
set query_file [lindex $argv 2];
spawn -noecho pbrun $usr &
expect -re "Password:"
send "$pwd\r"

sleep 1
expect "Enter reason for this privilege access:"
send "test\r"

send "kinit -k -t /opt/Cloudera/keytabs/`whoami`.`hostname -s`.keytab `whoami`/`hostname -f`@YOUR_FQDN_NAME.NET;ssl=true\r"
send "beeline -u 'jdbc:hive2://bigdataplatform-your_dev.net:10000/;principal=hive/bigdataplatform-your_dev.net@YOUR_FQDN_NAME.NET;ssl=true' --outputformat=csv2 --verbose=false  --fastConnect=true   --silent=true -f $query_file;\r"

expect "*]$\ " {send "exit\r"}
expect eof

Запрос:

select * from gfocnnsg_work.pytest LIMIT  1000000;

Остальное - Питон и Парамико. Я создаю транспортный объект, выполняю ожидаемый сценарий и сохраняю стандартный вывод в ОС Windows.

Путь доступа к данным:

Windows desktop->
               SSH->
                  Linux login->
                      pbrun service login-> 
                                          kinit 
                                          beeline-> 
                                                  SQL-> 
                                                      save echo on Windows  

Вот скрипт на Python с деталями: hivehoney

0 голосов
/ 01 сентября 2018

Вы можете поместить ваш запрос в файл, например, hive_script.sql и вывести его из терминала

hive -f hive_script.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...