我已将S3中的大量数据加载到hdfs中,然后将数据插入到impala中的表中。
然后我对这些数据进行了查询,我希望将这些结果反馈回S3。
我正在使用带有impala 1.2.4的Amazon EMR。如果不能直接将查询结果返回S3,是否有选项可以将数据恢复到hdfs,然后是一些如何从那里将数据发送回S3?
我已经弄乱了impala-shell -o filename
选项,但这似乎只适用于本地linux文件系统。
我认为这是一种常见的情况,但无法找到有关在任何地方保存查询结果的任何信息。
任何指示赞赏。
答案 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;