Scala in Spark 基本操作未完

來源:互聯網
上載者:User

[Apache Spark大資料分析入門(一)(http://www.csdn.net/article/2015-11-25/2826324)

spark 筆記 5: SparkContext,SparkConf

spark讀取hbase

Scala 強大的集合資料操作樣本

spark中的一些RDD操作以及變換

# 建立textFileRDDval textFile = sc.textFile("README.md")textFile.first()  #擷取textFile RDD的第一個元素res3:String = # Apache Spark# 篩選出包括Spark關鍵字的RDD然後進行行計數val  linesWithSpark = textFile.filter(line => line.contains("Spark"))linesWithSpark.count()res10:Long = 19# 找出RDD textFile中包含單詞數最多的行textFile.map(line=>line.split(" ").size).reduce((a,b)=>Math.max(a,b))res12:Int = 14  #第14行是包含單詞最多的行# 在scala shell中引入Java方法:import java.lang.MathtextFile.map(line=>line.split(" ").size).reduce((a,b) => Math.max(a,b))#將RDD linesWithSpark 緩衝,然後進行計數linesWithSpark.cache()res13:linesWithSpark.type = MapPartitionsRDD[8] at filter at <console>:23linesWithSpark.count()res15:Long = 19

RDD:
makeRDD 和 parallelize是一樣的,不過makeRDD好像只能scala用,parallelize是Python和 R都能用的

# 通過單字清單集合建立RDD thingsRDDval thingsRDD = sc.parallelize(List("spoon","fork","plate","cup","bottle"))# 計算RDD thingsRDD中單詞的個數thingsRDD.count()res16:Long = 5

groupByKey( )轉換操作

pairRDD.groupByKey()#得到:Banana [Yellow]Apple  [Red, Green]Kiwi   [Green]FIgs   [Black]
collect 或 materialize linesWithSpark RDD中的資料

collect方法返回計算好的數值。。。

linesWithSpark.collect()
緩衝RDD linesWithSpark
linesWithSpark.cache()
將linesWithSpark從記憶體中刪除

linesWithSpark,unpersist()

RDD的部分轉換操作:

轉換操作 作用
filter() 過濾
map() 將一個RDD中的每個資料項目,通過map中的函數映射為一個新的元素,返回集合對象
flatMap() 先map,再將所有的輸出分區合并成一個。
distinct() 對RDD中的元素進行去重操作
coalesce() 將RDD進行重新分區,使用HashPartitioner
repartition() coalesce函數第二個參數為true的實現
sample()
union() 將2個RDD合并,不去重
intersection() 返回兩個RDD的交集,並且去重
subtract 類似intersection,返回在RDD中出現,並且不在otherRDD中出現的元素,不去重。
mapPartitions 與map類似,按分區進行映射
mapPartitionsWithIndex 同mapPartitions,多提供了2個參數
zip 用於將兩個RDD組合成Key/Value形式的RDD,這裡預設兩個RDD的partition數量以及元素數量都相同,否則會拋出異常。
zipPartitions 將多個RDD按照partition組合成為新的RDD,該函數需要組合的RDD具有相同的分區數,但對於每個分區的元素數量沒有要求
partitionBy
mapValues
flatMapValues
combineByKey
foldByKey
groupByKey()
reduceByKey()
reduceByKeyLocally
randomSplit() 根據weights權重,將一個RDD切分成多個RDD

Action操作 說明
first
count
reduce
collect
take
top
takeOrdered
aggregate
fold
lookup
countByKey
foreach
foreachPartition
sortBy
saveAsTextFile
saveAsSequenceFile
saveAsObjectFile

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.