Spark RDD操作記錄(總結一)


創建List
intRDD = sc.parallelize(List(1,2,3,4,5))

過濾包含
stringRDD.filter(_.contains("a")).collect()

去重
stringRDD.distinct.collect()

RDD拆分
val sRDD = intRDD.randomSplit(Array(0.4,0.6))

顯示拆分后的RDD
sRDD(0).collect()

奇偶區分
intRDD.groupBy(x => {if (x % 2 == 0) "even" else "old"}).collect()

並集運算
intRDD1.union(intRDD2).union(intRDD3).collect()

++ 運算
(intRDD1 ++ intRDD2 ++ intRDD3).collect()

交集運算
intRDD1.intersection(intRDD2).collect()

差集運算
intRDD1.subtract(intRDD2).collect()

笛卡爾乘積
intRDD1.cartesian(intRDD2).collect()

取第一條數據
intRDD.first

取前兩條數據
intRDD.take(2)

從小到大讀前三條
intRDD.takeOrdered(3)

從大到小讀前三條
intRDD.takeOrdered(3)(Ordering[Int].reverse)

統計 intRDD.stats
最小 min
最大 max
stdev 標准偏差
count 計數
sum 求和
mean 平均

創建范例
val kvRDD1 = sc.parallelize(List((3,4),(3,6),(5,6),(1,2)))

列出所有key值
kvRDD1.keys.collect()

列出所有的value
kvRDD1.values.collect()
 
列出所有key小於5
kvRDD1.filter{case (key,value) => key < 5}.collect()

value值平方運算
kvRDD1.mapValues(x => x * x ).collect()

按照key小到大排序
kvRDD1.sortByKey(true).collect()  //可以不傳參數

reduceByKey
kvRDD1.reduceByKey((x,y) => x+y).collect()  kvRDD1.reduceByKey(_+_).collect()

join運算
kvRDD1.join(kvRDD2).collect()

讀取第一條數據的第一個元素
kvRDD1.first._1

計算每一個key值的條數
kvRDD1.countByKey()

輸入key來查找value值
kvRDD1.lookup(3)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM