2016-10-12 2 views
0

Ich schreibe Hive-Skript und ich muss eine Datei in hdfs in Hive-Skript lesen und den Dateiinhalt in Hive-Abfrage verwenden. Die Datei in hdfs enthält das Datum in einer einzigen Zeile.Ausführen von Unix-Befehlen in Hive-Skript

Ich weiß, wir können Unix-Befehle in Hive-Shell verwenden mit '!' Aber ich muss den folgenden Befehl verwenden und es funktioniert nicht mit!

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

select * from <tablename> where datestring = $snapshot_id 

Ist es möglich. ?

Antwort

0

Dies ist ähnlich zu dem, was Sie brauchen

#!/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 

hoffe, das hilft

+0

Ich möchte Shell-Skript nicht. Ich brauche hql Skript, dass ich es von oozie ausführen werde –

+1

Warum können Sie nicht als Shell-Aktion anstelle von Bienenstock Aktion in oozie laufen –

+1

Warum nicht beides? Sie sollten in der Lage sein, ein Argument von der Shell-Aktion an eine Hive-Aktion zu übergeben – JitterbugChew