啟動spark-shell 進行測試:
spark-shell
--master spark://node-1:7077
//通過並行化生成rdd
val rdd1 = sc.parallelize(list(5, 6, 4, 7, 3, 8, 2, 9, 1, 10))
//對rdd1裡的每乙個元素乘2然後排序
val rdd2 = rdd1.map(_ * 2).sortby(x => x, true)
//過濾出大於等於5的元素
val rdd3 = rdd2.filter(_ >= 5)
//將元素以陣列的方式在客戶端顯示
rdd3.collect
val rdd1 = sc.parallelize(array("a b c", "d e f", "h i j"))
//將rdd1裡面的每乙個元素先切分在壓平
val rdd2 = rdd1.flatmap(_.split(" "))
rdd2.collect
val rdd1 = sc.parallelize(list(5, 6, 4, 3))
val rdd2 = sc.parallelize(list(1, 2, 3, 4))
//求並集
val rdd3 = rdd1.union(rdd2)
//求交集
val rdd4 = rdd1.intersection(rdd2)
//去重
rdd3.distinct.collect
rdd4.collect
val rdd1 = sc.parallelize(list(("tom", 1), ("jerry", 3), ("kitty", 2)))
val rdd2 = sc.parallelize(list(("jerry", 2), ("tom", 1), ("shuke", 2)))
//求join
val rdd3 = rdd1.join(rdd2)
rdd3.collect
//求並集
val rdd4 = rdd1 union rdd2
rdd4.collect
//按key進行分組
val rdd5=rdd4.groupbykey
rdd5.collect
val rdd1 = sc.parallelize(list(("tom", 1), ("tom", 2), ("jerry", 3), ("kitty", 2)))
val rdd2 = sc.parallelize(list(("jerry", 2), ("tom", 1), ("jim", 2)))
//cogroup
val rdd3 = rdd1.cogroup(rdd2)
//注意cogroup與groupbykey的區別
rdd3.collect
val rdd1 = sc.parallelize(list(1, 2, 3, 4, 5))
//reduce聚合
val rdd2 = rdd1.reduce(_ + _)
rdd2.collect
val rdd1 = sc.parallelize(list(("tom", 1), ("jerry", 3), ("kitty", 2), ("shuke", 1)))
val rdd2 = sc.parallelize(list(("jerry", 2), ("tom", 3), ("shuke", 2), ("kitty", 5)))
val rdd3 = rdd1.union(rdd2)
//按key進行聚合
val rdd4 = rdd3.reducebykey(_ + _)
rdd4.collect
//按value的降序排序
val rdd5 = rdd4.map(t => (t._2, t._1)).sortbykey(false).map(t => (t._2, t._1))
rdd5.collect
val rdd1 = sc.parallelize(1 to 10,3)
//利用repartition改變rdd1分割槽數
//減少分割槽
rdd1.repartition(2).partitions
.size
//增加分割槽
rdd1.repartition(4).partitions
.size
//利用coalesce改變rdd1分割槽數
//減少分割槽
rdd1.coalesce(2).partitions
.size
注意:repartition可以增加和減少rdd中的分割槽數,coalesce只能減少rdd分割槽數,增加rdd分割槽數不會生效。
RDD行動運算元
作用 通過func函式聚集rdd中的所有元素,先聚合分區內資料,再聚合分區間資料。需求 建立乙個rdd,將所有元素聚合得到結果。1 建立乙個rdd int scala val rdd1 sc.makerdd 1 to 10,2 rdd1 org.apache.spark.rdd.rdd int pa...
RDD轉換運算元和行動運算元的區別
textfile 既不是transformation 也不是 action 它是為生成rdd前做準備 運算元 指的就是rdd上的方法。spark中的運算元分為2類 1 轉換運算元 transformation 由rrd 呼叫方法 返回乙個新的rdd 一直存在drive中因為沒生成task 特點 生成...
Spark學習進度 RDD運算元
需求 資料格式如下 在 spark 中,其實最終 job3 從邏輯上的計算過程是 job3 job1.map filter,整個過程是共享記憶體的,而不需要將中間結果存放在可靠的分布式檔案系統中 線性回歸 val points sc.textfile map persist val w random...