算子详解

spark RDD算子详解3

笑着哭i 提交于 2020-04-24 14:02:03
Actions算子 本质上在Actions算子中通过SparkContext执行提交作业的runJob操作,触发了RDD DAG的执行。 1.无输出 (1)foreach(f) 对RDD中的每个元素都应用f函数操作,不返回RDD和Array,而是返回Uint。 图3-25表示foreach算子通过用户自定义函数对每个数据项进行操作。本例中自定义函数为println(),控制台打印所有数据项。 2.HDFS saveAsTextFile (path, compressionCodecClass=None) 函数将数据输出,存储到HDFS的指定目录。 将RDD中的每个元素映射转变为(Null, x.toString),然后再将其写入HDFS。 图3-26中左侧的方框代表RDD分区,右侧方框代表HDFS的Block。通过函数将RDD的每个分区存储为HDFS中的一个Block。 3.Scala集合和数据类型 (1)collect() collect将分布式的RDD返回为一个单机的scala Array数组。在这个数组上运用scala的函数式操作。 图3-28中的左侧方框代表RDD分区,右侧方框代表单机内存中的数组。通过函数操作,将结果返回到Driver程序所在的节点,以数组形式存储。 (2)collectAsMap() collectAsMap对(K, V