Spark快速入门指南 – 梦里花落的博客 – 博客频道 – CSDN.NET
http://blog.csdn.net/qq_19244267/article/details/46456873
RDDs提供actions操作,通过它可以返回值;同时还提供 transformations操作,通过它可以返回一个新的RDD的引用。如下:
1 scala> textFile.count() // Number of items in this RDD
2 res1: Long = 108
我们再试试transformations操作,下面的例子中我们通过使用filter transformation来一个新的RDD:
1 scala> val linesWithSpark = textFile.filter(line => line.contains(“Spark”))
2 linesWithSpark: org.apache.spark.rdd.RDD[String] = FilteredRDD[4] at
3 filter at <console>:14
我们将transformations操作和actions操作连起来操作:
1 scala> textFile.filter(line => line.contains(“Spark”)).count()
2 res3: Long = 15
更多关于RDD上面的操作
【RDD的transformations操作和actions操作可以用于更复杂的计算】。下面的例子是找出README.md文件中单词数最多的行有多少个单词
1 scala> var size = textFile.map(line=>line.split(” “).size)
2 scala> size.reduce((a, b)=>if (a > b) a else b)
3 res4: Long = 15
map函数负责将line按照空格分割,并得到这行单词的数量,而reduce函数将获取文件中单词数最多的行有多少个单词。map和reduce函数的参数是Scala的函数式编程风格。我们可以直接用Java里面的Math.max()函数,这样会使得这段代码更好理解
//
我们比较熟悉的一种数据流模式是MapReduce,Spark可以很简单地实现MapReduce流
1 scala> val wordCounts = textFile.flatMap(line => line.split(” “))
2 .map(word => (word, 1)).reduceByKey((a, b) => a + b)
3 wordCounts: org.apache.spark.rdd.RDD[(String, Int)] =
4 MapPartitionsRDD[16] at reduceByKey at <console>:15
在上面的代码中,我们结合了【flatMap,map和reduceByKey等transformations操作】 来计算文件中每个单词的数量,并生成一个(String, Int) pairs形式的RDD。为了计算单词的数量,我们可以用【collect action】来实现: