我无法将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
个步骤。
答案 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 包含尾部斜杠。