如何保存impala查询的结果

时间:2015-07-20 04:01:58

标签: amazon-s3 hdfs amazon-emr impala

我已将S3中的大量数据加载到hdfs中,然后将数据插入到impala中的表中。

然后我对这些数据进行了查询,我希望将这些结果反馈回S3。

我正在使用带有impala 1.2.4的Amazon EMR。如果不能直接将查询结果返回S3,是否有选项可以将数据恢复到hdfs,然后是一些如何从那里将数据发送回S3?

我已经弄乱了impala-shell -o filename选项,但这似乎只适用于本地linux文件系统。

我认为这是一种常见的情况,但无法找到有关在任何地方保存查询结果的任何信息。

任何指示赞赏。

2 个答案:

答案 0 :(得分:2)

为了增加上面的知识,我将使用选项 - output_delimeter 并使用选项声明将包含查询结果写入带有分隔符的文件的命令 - delimeted 实际上会关闭默认的tab delimeter选项。

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

答案 1 :(得分:1)

如果它是一个小的结果集,我通常会从命令行运行脚本,然后使用AWS命令行工具上传到s3:

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

另一种方法是在Impala中运行查询后,将Hive用作数据管道中的最后一步:

<强> 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。 Hive步骤:

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

insert into table export
select * from processed_data;