Apache Spark 互动版

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

感受动作和变换的区别

我们用一个例子来直观感受下动作和变换的区别。

下面的例子首先做一个映射变换,然后返回新纪录的条数。map是一个变换,负责将原RDD的每个记录变换到新的RDD,count是一个动作,负责获取这个RDD的记录总数。

先执行map,你应该看到很迅速干净地返回:

scala> val rdd2=textFile.map(line=>line.length)
rdd2: org.apache.spark.rdd.RDD[Int] = MappedRDD[52] ...

再执行count,这会有些不一样:

scala> rdd2.count()
......
res10: Long = 141
.....

当执行map时,我们看到结果很快返回了。但当执行count时,我们可以看到一堆的提示信息,大概的意思就是 和调度器进行了若干沟通才把数据拉回来。

看起来确实这样,变换操作就只是写写剧本,Action才真正开始执行计算任务。

RDD操作分为两种:动作和变换,只有动作才会触发计算!

使用你刚才创建的textFile变量,进行上面的map和reduce操作,感受下map和reduce的区别。