日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hive中如何控制mapper的数量

發(fā)布時(shí)間:2025/4/14 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive中如何控制mapper的数量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考文檔:https://www.cnblogs.com/1130136248wlxk/articles/5352154.html

1. 決定map的數(shù)據(jù)的決定因素有:?input的文件總個(gè)數(shù),input的文件大小,集群設(shè)置的文件塊大小(目前為128M, 可在hive中通過set dfs.block.size;命令查看到,該參數(shù)不能自定義修改);

2.是不是map數(shù)越多越好,如何減少?

  a. 不是越多越好,多了會(huì)造成資源的浪費(fèi);因?yàn)閙ap任務(wù)的啟動(dòng)和初始化的時(shí)間,遠(yuǎn)遠(yuǎn)大于邏輯處理的時(shí)間;并且,map的數(shù)據(jù)是有限制的。

  b. 可以通過set設(shè)置,讓map在執(zhí)行前合并小文件,從而達(dá)到減少map數(shù):

    比如:??set mapred.max.split.size=100000000;?-- 決定每個(gè)map處理的最大的文件大小,單位為B
? ? ? ? ? ? ? ? ? ? ? ? set mapred.min.split.size.per.node=100000000;?-- 節(jié)點(diǎn)中可以處理的最小的文件大小
? ? ? ? ? ? ? ? ? ? ? ? set mapred.min.split.size.per.rack=100000000;?-- 機(jī)架中可以處理的最小的文件大小
? ? ? ? ? ? ? ? ? ? ? ? set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;---實(shí)現(xiàn)map中的數(shù)據(jù)合并需要設(shè)置下面的參數(shù),集群默認(rèn)就是這個(gè)格式

3. 是不是每個(gè)map處理的接近128M的文件塊,就OK了呢? 如果不OK,如何增加map的數(shù)量?

  a. 并不一定。當(dāng)文件接近128M,但是里的內(nèi)容卻非常多的時(shí)候并且map處理的邏輯比較復(fù)雜。那么用一個(gè)map處理,則時(shí)間會(huì)比較長(zhǎng)

  b. 把原來的單個(gè)文件拆分成多個(gè)的文件, 然后使用新的文件來執(zhí)行sql。

      set mapred.reduce.tasks=10;
? ?? ?? ?? ?? ?? ? create table a_1 as?
? ?? ?? ?? ?? ?? ? select * from a?
? ?? ?? ?? ?? ?? ? distribute by rand(123);

4. 控制map整體原則1:大數(shù)據(jù)量要利用合適的map數(shù);單個(gè)map要處理合適的數(shù)據(jù)量 。 2:map占用資源要合并小文件;map不足要把大文件拆成小文件。

5.reduce簡(jiǎn)單總結(jié):

  a.?有多少個(gè)reduce,就會(huì)有多少個(gè)輸出文件,如果生成了很多個(gè)小文件,那么如果這些小文件作為下一個(gè)任務(wù)的輸入,則也會(huì)出現(xiàn)小文件過多的問題;

  b.什么情況下只有一個(gè)reduce:1. 沒有g(shù)roup by就進(jìn)行count(1)。2.使用了order by。3.存在笛卡兒積。因?yàn)檫@些都是全局操作,生成一個(gè)文件,就只有1個(gè)reduce。

  c. set mapred.reduce.tasks/set hive.exec.reducers.bytes.per.reducer=1073741824 -- 每個(gè)reduce處理的數(shù)據(jù)量,默認(rèn)1GB

?

6. map數(shù)量一些深入的知識(shí):

  a. default_num = total_size/block_size,默認(rèn)情況下map的個(gè)數(shù)

  b.可以通過set mapred.map.tasks = goal_num?來設(shè)置期望的map個(gè)人,但是這個(gè)數(shù)量?jī)H在大于default_num 的時(shí)候才會(huì)生效。

  c. 可以通過set mapred.min.split.size來設(shè)置每個(gè)task的文件大小,但是這個(gè)數(shù)量在大于block_size的時(shí)候才會(huì)生效。

    split_size = max(mapred.min.split.size,block_size); split_num = total_szie/split_size

  d.

轉(zhuǎn)載于:https://www.cnblogs.com/chengdu-jackwu/p/10170895.html

總結(jié)

以上是生活随笔為你收集整理的hive中如何控制mapper的数量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。