運算元
1.MapPartition:
遍歷的單位是每一個partition
遍歷原理:將每一個partition的資料先載入到記憶體,然後一條一條的遍歷
MapPartition:遍歷的單位是每一個partition
Map:遍歷單位是每一條記錄
MapPartition定義:
問題:
應用場景:將RDD的資料寫入mysql orcale 應該選哪一個運算元遍歷RDD?
map? mapPartition
1.Map:當用map進行操作時:
出現的問題:建立資料庫的連線太多
解決方案:
①.通過資料庫連線池 (不可行 需要池非常大)
②.批量處理(①、批太大(sql語句拼接太長) ②、Executor中使用的是Driver端中的連線,socket型別的連線是不可以序列化的(可序列化的才能走網路傳輸))
③.使用mappartition運算元
2.MapPartition:
當前只有一個分割槽,只有一個建立連線
如果有10個分割槽時,會有10個連線
2.MapPartitionWithIndex:
在遍歷每一個Partition的時候能夠拿到每一個分割槽的ID號,這個運算元一般用於測試環境(看RDD有幾個分割槽,每個分割槽對映的什麼資料,可以使用這個運算元)
執行程式碼及結果:
3.CombineByKey:
遍歷原理:根據key進行遍歷聚
程式碼及執行結果、執行過程解析:
執行過程文字解析:
1.上述程式碼設定了兩個分割槽,兩個分割槽進行解析:先把同一個分割槽內的資料進行分組,相同的key資料放在一組。
2.分組完成後,開始第一步(初始化函式),得到相應的形式的資料,而且初始化函式是作用在第一個資料上(例如A的 1 上)
3.初始化完成以後,進行第二步:聚合操作,聚合操作中,如果A中有三個資料如: 1~ , 2 , 3 會進行兩次聚合形成: 1~ $2$3
4.每個分割槽資料進行聚合完畢後,會進行大聚合 得到想要的資料
問題:
1.使用combinebykey來模擬groupByKey的功能,如何實現?
rdd.combineByKey(
x=>ListBuffer[x] 初始化函式
(s:listBuffer ,i:Int)=>s+=i combine聚合函式
(s1:listBuffer,s2:listBuffer)=>s1++=s2 reduce大聚合函式
)
2.使用combinebykey來模擬reduceByKey的功能,如何實現?
x=>x
(x1:Int,x2:int)=>x1+x2
(x1:Int,x2:int)=>x1+x2
相關文章
- spark-運算元-分割槽運算元Spark
- 使用運算元控制公式運算公式
- Python 影像處理 OpenCV (12): Roberts 運算元、 Prewitt 運算元、 Sobel 運算元和 Laplacian 運算元邊緣檢測技術PythonOpenCV
- RDD運算元
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- JavaScript運算元組JavaScript
- python運算元據Python
- 運算元據庫
- MySQL DML運算元據MySql
- DDL:運算元據庫
- jmeter運算元據庫JMeter
- onnx 運算元定義
- 什麼是運算元?
- SIFT運算元總結
- Flink -- Operator操作運算元
- 運算元據庫表
- 3.0 常見operators運算元
- Spark常用Transformations運算元(一)SparkORM
- Python運算元據庫(3)Python
- Oracle OCP(10):運算元據Oracle
- sobel運算元,matlab實現Matlab
- Ascend C運算元開發指南
- 三元運算+包機制
- Flink - 運算元鏈合併方法
- Ascend C 自定義PRelu運算元
- python中Laplacian運算元如何使用Python
- java 運算元據庫備份Java
- 深入淺出PyTorch(運算元篇)PyTorch
- Spark RDD運算元(八)mapPartitions, mapPartitionsWithIndexSparkAPPIndex
- Python學習:運算元據庫Python
- js 方法(運算元組為主JS
- 利用 Sequelize 來運算元據庫
- spark一些常用運算元Spark
- Python 影像處理 OpenCV (13): Scharr 運算元和 LOG 運算元邊緣檢測技術PythonOpenCV
- 影像濾波演算法整理--均值、中值、高斯、拉普拉斯運算元、梯度運算元:演算法梯度
- 遺傳演算法的改進——跳出區域性最優機制的研究(選擇運算元、交叉運算元、變異運算元的改進)演算法
- Ascend C運算元開發指南2
- 【SEOI2024 A】二元運算器