2015-03-03 85 views
0

了以下形式的蜂巢插入語句:蜂房不尊重mapreduce.job.reduces

insert into my_table select * from my_other_table; 

使用一個減速 - 即使只是之前如下已被處決:

set mapreduce.job.reduces=80; 

是有一種方法可以迫使蜂巢使用更多的減速器?沒有明確的理由說明爲什麼這個特定的查詢會執行一個reducer - 因爲最後沒有ORDER BY子句。

BTW源和目標表都

stored as parquet 

回答

0

在蜂房SELECT * FROM table;不使用任何減速 - 這是一個地圖,唯一的工作。

一種方法來強制蜂巢在SELECT *使用的減壓器是GROUP BY所有字段,例如:

SELECT field1, field2, field3 FROM table GROUP BY field1, field2, field3; 

不過,請注意,這將刪除重複記錄。

0

在插入查詢中,您提到配置單元會嘗試將所有數據寫入單個文件。導致它只是一個選擇*聲明。因此1個減速器。

但是,如果你使用bucketing。配置單元將使用與您的存儲桶相同數量的減速器。

如果你有128個桶,配置單元會激發128個reducer作業,最終它會創建128個文件。