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端,資料按照分割槽編...