拆分文件較小,然後默認值不是一個有效的解決方案。 Spiting基本上是在處理大型數據集時使用的。默認值本身是一個小尺寸,所以它不值得再次分割。
我會在您的查詢之前推薦以下配置。您可以根據您的輸入數據應用它。
set hive.merge.mapfiles=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
set mapred.map.tasks = XX;
如果你要分配減速的數量也那麼你可以使用下面的配置
set mapred.reduce.tasks = XX;
需要注意的是在Hadoop 2(紗),該mapred.map.tasks
和mapred.reduce.tasks
已被棄用,並通過其他變量替換:
mapred.map.tasks --> mapreduce.job.maps
mapred.reduce.tasks --> mapreduce.job.reduces
請參考以下有關此
有用的鏈接
http://answers.mapr.com/questions/5336/limit-mappers-and-reducers-for-specific-job.html
Fail to Increase Hive Mapper Tasks?
映射器得到如何分配映射器的
編號由在MapReduce工作中使用的InputFormat確定分割的數量來確定。 在典型的InputFormat中,它與文件和文件大小成正比。
假設您的HDFS塊配置配置爲64MB(默認大小),你有100MB大小的文件 那麼它會佔用2塊,然後2映射器將得到一個基於塊轉讓應
但假設如果你有兩個30MB大小的文件(每個文件),那麼每個文件將佔用一個塊,並且映射器將基於該文件得到assigend 。
當您使用大量小文件時,Hive默認使用CombineHiveInputFormat。 就MapReduce而言,它最終轉化爲使用CombineFileInputFormat,它可以在多個文件上創建虛擬分割 ,並在可能的情況下按照公共節點,機架進行分組。合併拆分的大小由
mapred.max.split.size
or
mapreduce.input.fileinputformat.split.maxsize (in yarn/MR2);
所以,如果你想有更少的分裂(少映射器),你需要設置這個參數較高者確定。
此鏈接可用於瞭解更多信息。
What is the default size that each Hadoop mapper will read?
也映射器和減壓器的數量總是依賴羣集的可用映射器和減速插槽。
你的HBase表分成多少個區域? – Venkat
集羣中有多少地圖插槽可用? –
集羣中有多少地圖插槽可用? –