Hive结果未保存到S3存储桶

时间:2017-06-09 00:47:26

标签: hadoop amazon-s3 hive amazon-emr hue

我无法将Hive输出保存到S3。我已经尝试ssh进入主节点并在Hive中运行我的命令,但它不保存输出。我也尝试从AWS中的EMR控制台在Hue中运行命令,但它仍然没有保存到S3。我还添加了脚本作为一个步骤,但它仍然没有保存。我能够获得结果的唯一方法是在Hue中运行它然后单击以查看结果并下载该方式,然后将它们推送到S3。我无知为何发生这种情况。这是我正在运行的查询。

with temp as (
select /*+ streamtable(l) */ a.id, a.name, a.page
from my_table a
join my_other_table l on (a.id = l.id)
group by a.page, a.id, a.name)
insert overwrite directory 's3://bucket/folder/folder2/folder3/folder4/folder5/folder6/folder7/'
select page, count(distinct id) over (PARTITION BY page)
from temp
group by page;

作为一个注释,我希望解决方案在添加步骤时能够正常工作,因为我计划按顺序添加x个步骤。

2 个答案:

答案 0 :(得分:0)

我在亚马逊S3中看到Amazon EMR输出到Amazon S3的正常方式是CREATE EXTERNAL TABLE,其中LOCATION

例如:

CREATE EXTERNAL TABLE IF NOT EXISTS output_table
(gram string, year int, ratio double, increase double)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://my-bucket/directory';

然后,只有INSERT数据进入该表:

INSERT OVERWRITE TABLE output_table
SELECT gram FROM table...

答案 1 :(得分:0)

我找到了解决方案。

问题是S3位置的尾部斜线,您希望覆盖的目录的基本路径 NOT 包含尾部斜杠。