Apache Spark 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

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"的行数。