hadoop在預設的情況下,split和hdfs的block的大小是一樣的,這樣容易造成誤解認為兩者是一樣的,下面說下兩者的區別和聯絡:
split是mapreduce裡的概念,是切片的概念,split是邏輯切片 ;而block是hdfs中切塊的大小,block是物理切塊;
split的大小在預設的情況下和hdfs的block切塊大小一致,為了是mapreduce處理的時候減少由於split和block之間大小不一致,可能會完成多餘的網路之間的傳輸。
可以通過配置檔案進行設定:
–minsize 預設大小為1mapreduce.input.fileinputformat.split.minsize
–maxsize 預設大小為long.maxvalue mapreduce.input.fileinputformat.split.maxsize
在mapreduce的fileinputformat類中有個getsplits() 方法對檔案進行split,演算法如下:
math.max(minsize,math.min(maxsize, blocksize));其中maxsize是取得lon**aluemax的值
1.如果blocksize小於maxsize && blocksize 大於 minsize之間,那麼split就是blocksize;
2.如果blocksize小於maxsize && blocksize 小於 minsize之間,那麼split就是minsize;
3.如果blocksize大於maxsize && blocksize 大於 minsize之間,那麼split就是maxsize;
Hadoop的split和block的區別和聯絡
hadoop在預設的情況下,split和hdfs的block的大小是一樣的,這樣容易造成誤解認為兩者是一樣的,下面說下兩者的區別和聯絡 1.split是mapreduce裡的概念,是切片的概念,split是邏輯切片 而block是hdfs中切塊的大小,block是物理切塊 2.split的大小在預設...
給Oracle新增split和splitstr函式
最近專案中有很多需要做批量操作的需求,客戶端把一組逗號分隔的id字串傳給資料庫,儲存過程就需要把它們分割,然後逐個處理。以往的處理方式有如下幾種 1 在儲存過程內寫迴圈,逐個分析字串中的id,然後逐個處理。缺點 迴圈一次處理乙個,如果每次判斷都很多,效率將很受影響。適合每次處理要做單獨判斷的情況。2...
block和split的理解
兩者是從不同的角度來定義的 hdfs以固定大小的block為基本單位儲存資料 分布式檔案系統,實際儲存角度,物理儲存單位 而mapreduce以split作為處理單位 程式設計模型角度,邏輯單位 對於檔案中的一行記錄,可能會劃分到不同的block中,也可能劃分到不同的split中。split是邏輯上...