выполнение команд unix внутри скрипта hive

#hadoop #hive #hiveql

#hadoop #улей #hiveql

Вопрос:

Я пишу сценарий улья, и мне нужно прочитать файл в hdfs внутри скрипта улья и использовать содержимое файла в запросе улья. Файл в формате hdfs содержит дату в одной строке.

Я знаю, что мы можем использовать команды unix в оболочке hive, используя « ! Но мне нужно использовать приведенную ниже команду, и она не работает с!

 while IFS= read -r line; do snapshot_id=$line done < <(hadoop fs -cat /hdfs_path/date.txt)

select * from <tablename> where datestring = $snapshot_id
  

Возможно ли это. ?

Ответ №1:

Это похоже на то, что вам нужно,

 #!/bin/bash

old_IFS=$IFS
IFS=$'n'
for line in $(hadoop fs -cat /hdfs_path/date.txt)
do
   hive -f "select * from test where datestring = $line"
done          
IFS=$old_IFS
  

Надеюсь, это поможет

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

1. Я не хочу сценарий оболочки. Мне нужен скрипт hql, который я буду выполнять из oozie

2. почему вы не можете запускаться как действие оболочки вместо действия улья в oozie

3. Почему не оба? Вы должны иметь возможность передавать аргумент из действия оболочки в действие hive