我在impala中运行多个(大约60个)查询,使用文件中的impala shell并输出到文件。我正在使用:
impala-shell -q "query_here; query_here; etc;" -o output_path.csv -B --output_delimiter=','
问题是它们在查询之间没有分开,因此查询2将直接作为新行直接附加到查询1的底部。我需要将结果分开以便对每个查询进行数学计算,但是我做了不知道每个查询的结果在哪里完成而另一个查询的开始是因为它是一个连续的CSV文件。
有没有办法运行这样的多个查询,并在查询结果之间留下某种类型的空格或分隔符,或者以何种方式将查询结果分开?
感谢。
答案 0 :(得分:0)
您可以通过发出一些额外的查询来插入自己的分隔符,例如真实查询之间的select '-----';
。
尚无法将单个查询的结果写入本地文件,但已经有一个功能请求(IMPALA-2073)。但是,您可以轻松地将查询结果作为CSV文件保存到HDFS中。您只需创建一个新表来存储指定row format delimited fields terminated by ','
的结果,然后使用insert into table [...] select [...]
填充它。有关详细信息,请参阅文档部分Using Text Data Files with Impala Tables和INSERT Statement。
一条评论建议将各个查询作为单独的命令运行,并将其结果保存到单独的CSV文件中。如果您选择此解决方案,请注意create table
之类的DDL语句仅保证在发布它们的连接中立即生效。这意味着创建一个表然后立即在另一个impala shell中查询它很容易失败。即使您发现它可以正常工作,下次运行它时也可能会失败。另一方面,在同一个shell中一个接一个地运行这样的查询总是可以的。