2017-05-14 2 views
0

Ich erstelle ein Unix-Shell-Skript, um die Impala-Abfrage auszuführen. Ich brauche das Ausgabeprotokoll der Impala-Abfrage. Zum Beispiel habe ich das unten versucht.Wie bekomme ich das Impala-Abfrageausgabeprotokoll mithilfe von Unix-Shellskript in eine Variable?

output_log = echo $(impala-shell -i $node -q "select name from impaladb.impalatbl" -o output_file) 

Ausgang:

+--------+ 
| name | 
+--------+ 
| tom | 
| mike | 
+--------+ 

Fetched 2 row(s) in 0.83s 

Hier erhalte ich die zwei Namen Ausgang in beiden output_file und output_log. Aber ich brauche die "2 Zeile (s) in 0.83s abgerufen" log in output_log Variable. Wie kann ich es bekommen?

Antwort

0

Ich bin nicht vertraut mit Impala, also bin ich nicht zuversichtlich, dass das, was Sie tun, die effizienteste Möglichkeit ist, Impala abzufragen. Sie versuchen jedoch, sich auf eine bestimmte Ausgabezeile zu konzentrieren. das kann ich beantworten.

Es gibt viele Möglichkeiten, dies zu tun. Vielleicht ist der direkteste ist grep:

output_log = echo `impala-shell -i $node -q "select name from impaladb.impalatbl" -o output_file | grep Fetch` 
+0

ich versuchte. Es ist leer. da die Abfrage nur die Tabellenausgabe wie folgt zurückgibt. + -------- + | Name | + -------- + | tom | | Mike + -------- + – Muthuraj

0

Try this:

Lösung 1:

output_log=$(nohup impala-shell -k --ssl -i $node --verbose --delimited --query="select count(*) as cnt from impaladb.impalatbl" 2>/dev/null) 
echo $output_log 

Lösung 2:

output_log=$(echo `impala-shell -k --ssl -i $node --verbose --delimited --query="select count(*) as cnt from impaladb.impalatbl" -o output_file | head output_file`) 
echo $output_log 
Verwandte Themen