2017-06-09 95 views
0

我在將配置單元輸出保存到S3時遇到問題。我試過ssh ing到主節點並在Hive中運行我的命令,但它不保存輸出。我也曾嘗試在AWS中的EMR控制檯中運行Hue中的命令,但仍不保存到S3。我還將該腳本添加爲步驟,但仍不能保存。我能夠得到結果的唯一方法是在Hue中運行它,然後單擊以查看結果並以此方式下載,然後將它們推送到S3。我無能爲力,爲什麼會發生這種情況。這是我正在運行的查詢。未將配置單元結果保存到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

我在Amazon S3上看到Amazon EMR輸出的正常方式是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... 
+0

您提供的第一部分代碼會在S3中的Hive中創建一個表,這是正確的,而且是我如何從S3中的數據創建表。我想從蜂巢----> S3出發。據我所知,查詢的前綴是「插入覆蓋目錄」,後跟S3存儲桶。 –

+0

上述語法適用。您只需將INSERT插入表中,然後將其寫入S3。 –

+0

這也適用,接受可視性 –

0

我找到了解決辦法。

問題是位於S3位置的尾部斜線,您希望寫入的目錄的基本路徑應爲NOT包含尾部斜線。