如何保存impala查询的结果

6ojccjat  于 2021-06-26  发布在  Impala
关注(0)|答案(3)|浏览(558)

我已经将s3中的一大组数据加载到hdfs中,然后将数据插入到impala中的一个表中。
然后我对这些数据运行了一个查询,并希望将这些结果返回到s3中。
我使用的是amazonemr和impala1.2.4。如果无法将查询结果直接返回到s3,是否有选项将数据返回到hdfs,然后如何从那里将数据发送回s3?
我把这件事搞砸了 impala-shell -o filename 选项,但这似乎只适用于本地linux文件系统。
我原以为这是一种常见的情况,但在任何地方都找不到有关保存查询结果的信息。
谢谢你的指点。

iq3niunx

iq3niunx1#

为了增加上述知识,我加入了一个命令,该命令将查询结果写入一个带有delimeter的文件,正如我们使用选项--output\u delimeter声明的那样,还使用了选项--delimetered,它实际上关闭了默认的tab delimeter选项。

impala-shell -q "query " --delimited   --output_delimiter='\001'  --print_header -o 'filename'
slsn1g29

slsn1g292#

如果安装了aws cli,则可以使用标准的impala shell,impala shell query | aws cli cp-s3folder/outputfilename可以使用unix管道和流(-)

nqwrtyyt

nqwrtyyt3#

如果结果集很小,我通常会从命令行运行脚本,然后使用aws命令行工具上传到s3:

impala-shell -e "select ble from bla" -o filename
aws s3 cp filename s3://mybucket/filename

另一种方法是在impala中运行查询后,将配置单元用作数据管道中的最后一步:

  1. Impala 步:
create table processed_data
as
select blah
--do whatever else you need to do in here
from raw_data1
join raw_data2 on a=b

2.配置单元步骤:

create external table export
like processed_data
location 's3://mybucket/export/';

insert into table export
select * from processed_data;

相关问题