2014-04-01 28 views
0

我在蜂巢中有一個分區表,其中每個分區將有630個平均大小爲100kb的gzip壓縮文件。如果我使用配置單元對這些文件進行查詢,它將生成恰好630個映射器,即一個映射器用於一個文件。
現在作爲一個實驗,我試着用豬和豬讀取這些文件,實際上它們組合了這些文件,並且只產生了2個映射器,操作速度比蜂巢快得多。
爲什麼豬和蜂巢的執行風格有所不同?在配置單元中我們可以類似地組合小文件來產生更少的映射器嗎?豬和蜂巢中產生的映射器數

回答

2

您需要指定要使用CombineHiveInputFormat

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 

您還應該設置最小分割尺寸高:

set mapred.min.split.size=100000000; 

作爲一個側面說明,CombineHiveInputFormat是默認正因爲這個原因(很多小文件)EMR上的Hive輸入格式,請參閱How Amazon EMR Hive Differs from Apache Hive

豬請問結合,因爲是在默認情況下,看到Combine Small Input Files

pig.splitCombination - 打開合併分割文件或關閉(默認設置爲「真」)。