Spark 兩個RDD按key合併(join運算元和cogroup運算元)
在工作中經常遇到需要合併RDD的情況,記錄下處理情況。join和cogroup運算元都能達到要求,按key合併,只是當rdd存在多個相同的key時候,最終的輸出結果不一樣。網上找到了處理情況,自己也測試了,程式碼如下:
object Test { def main(args: Array[String]): Unit = { val spark = SparkSession.builder().appName("test"). master("local[2]").getOrCreate() val sc = spark.sparkContext sc.setLogLevel("WARN") /** * id name * 1 zhangsan * 2 lisi * 3 wangwu */ val idName = sc.parallelize(Array((1, "zhangsan"), (2, "lisi"), (3, "wangwu"))) /** * id age * 1 30 * 2 29 * 4 21 */ val idAge = sc.parallelize(Array((1, 30), (2, 29), (4, 21))) println("cogroup") /** * (1,(CompactBuffer(zhangsan),CompactBuffer(30))) * (2,(CompactBuffer(lisi),CompactBuffer(29))) * (3,(CompactBuffer(wangwu),CompactBuffer())) * (4,(CompactBuffer(),CompactBuffer(21))) */ idName.cogroup(idAge).collect().foreach(println) println("join") // fullOuterJoin於cogroup的結果類似, 只是資料結構不一樣 /** * (1,(Some(zhangsan),Some(30))) * (2,(Some(lisi),Some(29))) * (3,(Some(wangwu),None)) * (4,(None,Some(21))) */ idName.fullOuterJoin(idAge).collect().foreach(println) /** * id score * 1 100 * 2 90 * 2 95 */ val idScore = sc.parallelize(Array((1, 100), (2, 90), (2, 95))) println("cogroup, 出現相同id時") /** * (1,(CompactBuffer(zhangsan),CompactBuffer(100))) * (2,(CompactBuffer(lisi),CompactBuffer(90, 95))) * (3,(CompactBuffer(wangwu),CompactBuffer())) */ idName.cogroup(idScore).collect().foreach(println) println("join, 出現相同id時") /** * (1,(Some(zhangsan),Some(100))) * (2,(Some(lisi),Some(90))) * (2,(Some(lisi),Some(95))) * (3,(Some(wangwu),None)) */ idName.fullOuterJoin(idScore).collect().foreach(println) } }
相關推薦
Spark 兩個RDD按key合併(join運算元和cogroup運算元)
在工作中經常遇到需要合併RDD的情況,記錄下處理情況。join和cogroup運算元都能達到要求,按key合併,只是當rdd存在多個相同的key時候,最終的輸出結果不一樣。網上找到了處理情況,自己也測試了,程式碼如下: object Test { def main(ar
LINUX下按key合併——join命令
join命令 功能:“將兩個檔案裡指定欄位同樣的行連線起來”,即依照兩個檔案裡共有的某一列,將相應的行拼接成一行。 join [options] file1 file2注:這兩個檔案必須在已經在此列上是依照同樣的規則進行了排序。 join選項 -a FILENUM:除了顯
兩個dateframe物件的合併方法join
兩個dateframe物件的合併方法 如果是以index為時間序列的,那麼可以採用pd的join方法。直接對於索引展開合併專案,使用+法是無法達到目標的。 以下程式碼: import pandas as pd csvfile = file('rb1805_1min.csv', 'rb') r
Spark RDD 按Key儲存到不同檔案
基本需求 將Keyed RDD[(Key,Value)]按Key儲存到不同檔案。 測試資料 資料格式:id,studentId,language,math,english,classId,depart
python兩個一維列表合併成一個二維列表
>>> list1 = [1,2,3,4,4] >>> list2 = [2,3,4,5,2] >>> z = list(zip(list1,list2)) >>> z [(1, 2), (2, 3), (3, 4)
兩個對象key相同但是value不同,將value不同的鍵值對以對象形式輸出
鍵值對 ons 形式 {} name 但是 ole 相同 key let obj={ name:'jack', age:18, sex:'girl' } let obj2={
java兩個有序連結串列合併
java兩個有序連結串
資料結構中的兩個順序表的合併
#include <iostream> #include<stdlib.h> using namespace std; #define MAXSIZE 100 #define TRUE 1 #define FALSE 0 #define OK 1
把兩個有序數組合併成一個有序陣列,演算法複雜度O(N)
/** * */ /** * @author jueying: * @version 建立時間:2018-10-22 下午01:32:44 * 類說明 */ /** * @author jueying * */ public class Test4 {
兩個陣列的交叉合併
var ary=["A","B","C","D"]; var ary2=[1,2,3,4,5,6,]; function aryJoinAry(ary,ary2) { var itemAry=[]; var minLength; //先拿到兩個陣列中長度較短的那個
兩個有序單鏈表合併成一個有序單鏈表的java實現
僅作為備註, 便於自己回顧. import java.util.Arrays; /** * @author John Kenrinus Lee * @version 2016-10-20 */ public class MergeSort { public static
java實現兩個有序連結串列合併為一個有序連結串列
節點類 public class Node { private Node next; private Integer number; Node(Integer number) { this.number=number; next=null; } Node() {
CAD中如何將兩個CAD圖紙檔案合併
在CAD中,小夥伴們可能會遇到過這樣的問題,那就是在CAD繪圖中怎麼將兩個CAD圖紙檔案進行合併,那在CAD中如何將兩個CAD圖紙檔案的具體操作要怎麼來操作呢?小夥伴們都知道嗎?那下面小編就來教教大傢俱體的操作技巧,希望能夠幫助到你們。 第一步:首先,小夥伴們將電腦進行開啟,如果電腦中沒有安裝CAD編輯器。
C# 將兩個不同的dataTable合併到一個自定義的dataTable中
[csharp] view plain copy //比較三種情況 &
java 兩個有序數組合併到一個有序陣列(時間複雜度低)
預設一般會採用陣列先合併,在排序 時間複雜度會在o(n) -o(n*n) 之間 我想了個其他的思路 對陣列1 和陣列2 元素從頭開始進行一次對比,小的放入結果集合, 直到兩個陣列的元素都加入結果集合 這樣的時間複雜度 在o(n) 只要比較兩個陣列較短的長度的次數 程式碼
兩個連結串列的合併
題目要求: 注意題目中的一句話,要求我們使用原來序列中的結點!那麼我們就不能使用新的記憶體單元,來單獨儲存合併後的連結串列。 【如果申請新記憶體,pta會報段錯誤】 使用原來的結點:優點,節省記憶體;缺點,破壞了原來的連結串列,不能原樣輸出原連結串列## 使用新記
leetcode617+兩個二叉樹合併,DP
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x
比較兩個json,key值相同的情況下判斷另一個json的value值是否為空(遞迴)
前言:作為一個Java的初學者,第一個寫部落格,如有不當之處請多多指教。我是在檢驗報文的必輸項的情況下寫的該方法。 import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONArray
七、兩個有序連結串列合併(遞迴方式)
/** * 合併兩個有序連結串列,合併後依舊有序,當連結串列1是空連結串列時,合併結果就是連結串列2,但連結串列2是空連結串列時, * 合併結果是連結串列1;如果兩都是空連結串列,合併結果就是空連結
C++將兩個遞增連結串列 合併成 一個遞增連結串列 不佔用額外的空間
/*create by tyy*/ #include <iostream> #include <string> using namespace std; #define ok 1 #define error -1 #define overflow -