2016-08-03 13 views
0

Ich führe mehrere (ca. 60) Abfragen im Impala mit Impala Shell aus einer Datei und Ausgabe in eine Datei. Ich verwende:Mehrere Abfrageergebnisse trennen

impala-shell -q "query_here; query_here; etc;" -o output_path.csv -B --output_delimiter=',' 

Das Problem ist, dass sie nicht zwischen Abfragen getrennt sind, so Abfrage 2 würde direkt als neue Zeile direkt auf den Boden der Abfrage angehängt 1. Ich brauche die Ergebnisse Mathematik trennen sie Ich weiß jedoch nicht, wo die Ergebnisse jeder Abfrage erstellt werden, und eine andere beginnt, weil es sich um eine fortlaufende CSV-Datei handelt.

Gibt es eine Möglichkeit, mehrere Abfragen wie diese auszuführen und einen Typ von Leerzeichen oder Trennzeichen zwischen Abfrageergebnissen oder einer anderen Möglichkeit zu hinterlassen, um die Ergebnisse der Abfrage voneinander zu trennen?

Danke.

+0

Warum starten Sie sie nicht einfach separat in separate CSV-Dateien? – alzee

+0

Ich bin nicht zu sehr darüber informiert, ist so richtig, wenn ich falsch liege, aber ich hatte den Eindruck, dass sie als eine multiple Abfrage statt einer Reihe von ihnen getrennt laufen würde einige Leistung profitieren. Ich muss auch die separaten CSV-Dateien wieder verbinden, um einige Verbindungen zu ihren Ergebnissen mit anderen Abfrageergebnissen zu machen. –

+0

Einige potenzielle, aber vernachlässigbare Leistungsvorteile sind nutzlos, wenn die Lösung zunächst nicht funktioniert. Präventives Tuning ist normalerweise eine schlechte Idee. Lass es zuerst arbeiten, dann optimiere es. – alzee

Antwort

0

Sie können eigene Trennzeichen einfügen, indem Sie einige zusätzliche Abfragen, z. B. select '-----'; zwischen den echten Abfragen, eingeben.

Das Schreiben von Ergebnissen einzelner Abfragen in lokale Dateien ist noch nicht möglich, aber es gibt bereits eine Feature-Anforderung für sie (IMPALA-2073). Sie können Abfrageergebnisse jedoch problemlos als CSV-Dateien in HDFS speichern. Sie müssen nur eine neue Tabelle erstellen, um die Ergebnisse unter Angabe von row format delimited fields terminated by ',' zu speichern, und dann insert into table [...] select [...] verwenden, um sie zu füllen. Weitere Informationen finden Sie in den Dokumentationsabschnitten Using Text Data Files with Impala Tables und INSERT Statement.

Ein Kommentar schlug vor, die einzelnen Abfragen als separate Befehle auszuführen und ihre Ergebnisse in separaten CSV-Dateien zu speichern. Wenn Sie diese Lösung wählen, beachten Sie bitte, dass DDL-Anweisungen wie create table nur in der Verbindung gültig sind, in der sie ausgegeben wurden. Dies bedeutet, dass das Erstellen einer Tabelle und die sofortige Abfrage in einer anderen Impala-Shell zu Fehlern führt. Selbst wenn Sie feststellen, dass es korrekt funktioniert, kann es beim nächsten Ausführen fehlschlagen. Auf der anderen Seite ist es immer in Ordnung, solche Abfragen nacheinander in derselben Shell auszuführen.