2016-08-03 48 views
0

我在impala中使用impala shell從文件運行多個(大約60個)查詢並輸出到文件。我使用:分離多個查詢結果

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

的問題是,他們沒有查詢之間的分離,所以查詢2將直接追加爲新行權到查詢1的底部。我需要單獨的結果,他們的數學隨着每個查詢,但我不知道每個查詢的結果完成,另一個開始,因爲它是一個連續的CSV文件。

有沒有辦法像這樣運行多個查詢,並在查詢結果之間留下某種類型的空間或分隔符,或者以任何方式來分隔他們來自哪個查詢的結果?

謝謝。

+0

爲什麼不直接將它們分別開始運行到單獨的csv文件中? – alzee

+0

我不太瞭解如果我錯了,那麼正確的是我,但我的印象是,將它們作爲一個多個查詢而不是單獨的一堆查詢運行會對性能有一定的好處。 我還需要重新加入單獨的CSV文件,以使其結果與其他查詢結果進行一些連接。 –

+0

如果解決方案不適用於開始,一些潛在的但可忽略的性能優勢毫無意義。先發制人的調整通常是一個壞主意。先讓它工作,然後優化。 – alzee

回答

0

您可以通過發出一些額外的查詢插入您自己的分隔符,例如select '-----';在真正的查詢之間。

單個查詢寫入本地文件的結果尚不可能,但已經有一個功能請求(IMPALA-2073)。但是,您可以將查詢結果以CSV文件的形式輕鬆保存到HDFS中。您只需創建一個新表來存儲指定row format delimited fields terminated by ','的結果,然後使用insert into table [...] select [...]來填充它。有關詳細信息,請參閱文檔部分Using Text Data Files with Impala TablesINSERT Statement

一條評論建議將單個查詢作爲單獨的命令運行並將其結果保存到單獨的CSV文件中。如果您選擇此解決方案,請注意DDL語句(如create table)只能保證在發佈連接時立即生效。這意味着創建一個表然後立即在另一個黑斑羚殼中查詢它很容易失敗。即使您發現它可以正常工作,下次運行時也可能會失敗。另一方面,在同一個shell中一個接一個地運行這些查詢總是可以的。