分离多个查询结果

pokxtpni  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(271)

我在impala中使用impalashell从一个文件运行多个(大约60个)查询,并输出到一个文件。我正在使用:

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

问题是它们在查询之间没有分开,因此查询2将作为新行直接附加到查询1的底部。我需要分开的结果,以数学他们与每个查询,但我不知道每个查询的结果是在哪里完成,另一个开始,因为它是一个连续的csv文件。
有没有一种方法可以像这样运行多个查询,并在查询结果之间留下某种类型的空格或分隔符,或者有没有任何方法可以分隔查询结果的来源?
谢谢。

jv2fixgn

jv2fixgn1#

例如,您可以通过发出一些额外的查询来插入自己的分隔符 select '-----'; 在真正的询问之间。
将单个查询的结果写入本地文件是不可能的,但是已经有了一个特性请求(impala-2073)。但是,您可以轻松地将查询结果作为csv文件保存到hdfs中。您只需创建一个新表来存储结果 row format delimited fields terminated by ',' ,然后使用 insert into table [...] select [...] 来填充它。有关详细信息,请参阅使用文本数据文件和impala表格以及insert语句的文档部分。
一条评论建议将单个查询作为单独的命令运行,并将其结果保存到单独的csv文件中。如果您选择此解决方案,请注意ddl语句 create table 只保证在发行时立即生效。这意味着创建一个表,然后在另一个impala shell中立即查询它很容易失败。即使您发现它工作正常,下次运行它时也可能会失败。另一方面,在同一个shell中一个接一个地运行这样的查询总是可以的。

相关问题