spark join 類運算元

2022-04-03 09:14:50 字數 2469 閱讀 1427

join,leftouterjoin,rightouterjoin,fullouterjoin  都是transformation類別的運算元

作用在k,v格式的rdd上。根據k進行連線,對(k,v)join(k,w)返回(k,(v,w))

join後的分割槽數是多的那個的分割槽

join

val kzc=spark.sparkcontext.parallelize(list(("hive",8),("apache",8),("hive",30),("hadoop",18)))

val bd=spark.sparkcontext.parallelize(list(("hive","test"),("test",2),("spark",20)))

val result1=bd.join(kzc)

result1.collect().foreach(println(_))

結果

(hive,(test,8))

(hive,(test,30))

leftouterjoin

val kzc=spark.sparkcontext.parallelize(list(("

hive

",8),("

apache

",8),("

hive

",30),("

hadoop

",18

))) val bd=spark.sparkcontext.parallelize(list(("

hive

","test

"),("

test

",2),("

spark

",20

))) val result1=bd.leftouterjoin(kzc)

result1.collect().

foreach(println(_))

結果,沒有連線上的為none

(spark,(20

,none))

(hive,(test,some(

8)))

(hive,(test,some(

30)))

(test,(

2,none))

rightouterjoin ,以右邊rdd為準

val kzc=spark.sparkcontext.parallelize(list(("

hive

",8),("

apache

",8),("

hive

",30),("

hadoop

",18

))) val bd=spark.sparkcontext.parallelize(list(("

hive

","test

"),("

test

",2),("

spark

",20

))) val result1=bd.rightouterjoin(kzc)

result1.collect().

foreach(println(_))

結果,沒有連線上的是none

(hive,(some(test),8

))(hive,(some(test),

30))

(hadoop,(none,

18))

(apache,(none,

8))

fullouterjoin
val kzc=spark.sparkcontext.parallelize(list(("

hive

",8),("

apache

",8),("

hive

",30),("

hadoop

",18

))) val bd=spark.sparkcontext.parallelize(list(("

hive

","test

"),("

test

",2),("

spark

",20

))) val result1=bd.fullouterjoin(kzc)

result1.collect().

foreach(println(_))

結果

(spark,(some(20

),none))

(hive,(some(test),some(

8)))

(hive,(some(test),some(

30)))

(hadoop,(none,some(

18)))

(apache,(none,some(

8)))

(test,(some(

2),none))

spark join資料偏移優化

首先強烈推薦該篇文章 寫的非常仔細。持續優化中 背景 我在實踐過程中遇到了 20億資料 join 300w資料的情況。同時我的資料中主key分布並不均勻,存在大key。結果 執行過程種有幾個task執行非常緩慢,拖慢了整體的執行速度。對比 直接join 用時40分鐘。優化 實踐了上述文章中 解決方案...

SparkRDD運算元 sample運算元

val newrdd oldrdd.sample withreplacement,fraction,seed withreplacement表示是抽出的資料是否放回,true為有放回的抽樣,false為無放回的抽樣 fraction表示隨機抽樣的資料數量 seed用於指定隨機數生成器種子 def s...

spark運算元 五 action運算元

collect package com.doit.spark.demoday05 import org.apache.spark.sparkcontext author 向陽木 date 2020 09 22 22 19 description 將資料以陣列形式收集回driver端,資料按照分割槽編...