spark RDD textFile運算元 分割槽數量詳解
進入textFile原碼
發現 分割槽數量呼叫 hadoopFile中的TextInputFormat類,傳入引數Key為LongWritable即偏移量,value為Text,
由此得知是通過這個類來讀取
繼續進入TextInputFormat類中
發現有個是否可以切分的判斷,可以知道 一些不可拆分的檔案由此過濾掉,可以切片拆分的檔案繼續往下尋找卻沒有相關處理邏輯 ,所以我們向上去到父類FileInputFormat中
找到如上邏輯,呼叫了listStatu與namenode互動獲取檔案屬性,把要讀取的檔案總長度計算出來 totalSize
下面找到一個關鍵變數goalSize他的值為所有檔案總長度除以預設最小分割槽數,
中間過程不一一贅述,關鍵程式碼在computeSplitSize
進入computeSplitSize中
三個引數值 goalSize上述計算過,minSize預設為1,blockSize為HDFS預設塊大小 128M
computeSplitSize主處理很簡單,先比較goalSize和blockSize大小取兩者最小的,再與minSize比較取兩者最大的 最終結果賦給splitSize
之後回到先前邏輯, 定義一個bytesRemaining接收每個檔案的長度,進入while迴圈 條件為
檔案長度/splitSize >1.1即SPLIT_SLOP便執行切分操作 直到條件不滿足 停止迴圈切分
舉例說明:
4個檔案長度分別為100 100 100 1400位元組,預設最小分割槽為2
首先計算全部檔案總長度totalSize=100+100+100+1400=1700
goalSize=totalSize/最小分割槽數即2 =850
blockSize=128M換算成位元組為134217728
minSize=1
goalSize與blockSize取最小 值為850
850 與minSize取最大 值為850
即splitSize為850
然後 每個檔案長度除以850 判斷是否大於1.1
檔案1,2,3都是100所以各生成1個分割槽,
檔案4位1400,除以850>1.1 切分一個分割槽,剩餘
(1400-850)/850 >1.1不再成立 又生成一個分割槽.
所以舉例中的四個檔案 共生成5個分割槽
相關文章
- Spark運算元:統計RDD分割槽中的元素及數量Spark
- spark-運算元-分割槽運算元Spark
- Spark RDD的預設分割槽數:(spark 2.1.0)Spark
- Spark----RDD運算元分類 DAGSpark
- Spark RDD運算元(八)mapPartitions, mapPartitionsWithIndexSparkAPPIndex
- Spark運算元篇 --Spark運算元之aggregateByKey詳解Spark
- Spark運算元篇 --Spark運算元之combineByKey詳解Spark
- Spark開發-RDD分割槽重新劃分Spark
- Spark RDD使用詳解--RDD原理Spark
- Spark運算元:RDD基本轉換操作map、flatMapSpark
- 深入原始碼理解Spark RDD的資料分割槽原理原始碼Spark
- spark RDD運算元(五)之鍵值對聚合操作combineByKeySpark
- Spark運算元:RDD行動Action操作學習–countByKey、foreach、sortBySpark
- Spark學習——分割槽Partition數Spark
- 【Spark篇】---Spark中控制運算元Spark
- 【Spark篇】---Spark中Action運算元Spark
- 【Spark篇】---Spark中transformations運算元二SparkORM
- Spark常用Transformations運算元(一)SparkORM
- Spark常用Transformations運算元(二)SparkORM
- Spark效能調優-RDD運算元調優篇(深度好文,面試常問,建議收藏)Spark面試
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- 【Spark篇】---Spark中Transformations轉換運算元SparkORM
- Spark RDD詳解 | RDD特性、lineage、快取、checkpoint、依賴關係Spark快取
- spark一些常用運算元Spark
- oracle 分割槽表詳解Oracle
- MySQL分割槽(Partition)詳解MySql
- oracle表分割槽詳解Oracle
- oracle分割槽表詳解Oracle
- Oracle 表分割槽詳解Oracle
- 圖解Spark排序運算元sortBy的核心原始碼圖解Spark排序原始碼
- Hive和Spark分割槽策略HiveSpark
- Spark操作Hive分割槽表SparkHive
- Hive動態分割槽詳解Hive
- SQL Server表分割槽詳解SQLServer
- oracle索引詳解 分割槽索引Oracle索引
- 硬碟分割槽表詳解(轉)硬碟
- Spark RDD APISparkAPI
- spark-RDDSpark