Сохранить сеанс улья открытым EMR

#bash #hive #hiveql #amazon-emr

#баш #улей #hiveql #amazon-emr

Вопрос:

Я запускаю скрипт bash на AWS EMR, который делает что-то вроде:

 for i in (‘tab1’ ‘tab2’ ‘tab3’ ‘tab4’)
  do
   nrow=$(hive -e “select count(*) from $i”) 
  done
 

Это требует времени, так как для каждого подсчета необходимо настроить новый сеанс улья.
Есть ли способ сохранить сеанс открытым на протяжении всего цикла?

Ответ №1:

Выполните все подсчеты в одном операторе. Вы также можете сгенерировать инструкцию SQL вместо жесткого кодирования.

Что-то вроде этого:

 output=$(hive -S -e "select 'tab1', count(*) from tab1
                     union all 
                     select 'tab2', count(*) from tab2
                     union all 
                     select 'tab3', count(*) from tab3")

echo "$output" | while read TABLE_NAME COUNT
do
echo "$TABLE_NAME $COUNT"
done
 

Комментарии:

1. Спасибо! Запишет инструкцию в отдельный файл и отправит его за один сеанс.