RDD变换:数据的滤镜
RDD变换将产生一个新的RDD。下面的例子中,我们执行一个过滤(Filter)变换,将获得一个新的RDD,由原 RDD中符合过滤条件(即:包含单词Spark)的记录成员构成:
scala> val linesWithSpark = textFile.filter(line => line.contains("Spark")) linesWithSpark: spark.RDD[String] = spark.FilteredRDD@7dd4af09
变量lineWithSpark现在是一个RDD,由变量textFile这个RDD中所有包含"Spakr"单词的行构成。
由于一个RDD变换总是返回一个新的RDD,因此我们可以将变换和动作使用链式语法串起来。下面的 例子使用了链式语法解决一个具体问题:在文件中有多少行包含单词“Spark”?
scala> textFile.filter(line => line.contains("Spark")).count() res3: Long = 15
这等同于:
scala> val rdd1 = textFile.filter(line => line.contains("Spark")) ... scala> rdd1.count() res12: Long = 15
用链式语法写起来更流畅一些,不过这只是一种口味的倾向而已。
RDD变换总是返回RDD,这让我们可以把变换串起来!
请使用你的textFile变量,计算出包含"Apache"的行数。