Spark中RDD转换的结果是什么?

Spe*_*ise 5 apache-spark rdd

任何人都可以解释一下,RDD转换的结果是什么?它是新的数据集(数据副本)还是只是新的指针集,过滤旧数据块?

pze*_*vic 13

RDD转换允许您在RDD之间创建依赖关系.依赖关系只是产生结果的步骤(程序).沿袭链中的每个RDD(依赖性串)具有用于计算其数据的函数,并且具有指向其父RDD的指针(依赖性).Spark会将RDD依赖项划分为阶段和任务,并将这些依赖项发送给工作人员执行.

所以,如果你这样做:

val lines = sc.textFile("...")
val words = lines.flatMap(line => line.split(" "))
val localwords = words.collect()
Run Code Online (Sandbox Code Playgroud)

单词将是包含对行RDD的引用的RDD.执行程序时,将执行第一行的功能(从文本文件加载数据),然后对结果数据执行单词'功能(将分割行分成单词).Spark很懒,所以除非你调用一些会触发作业创建和执行的转换或动作(在这个例子中收集),否则不会执行任何操作.

因此,RDD(转换后的RDD)也不是"一组数据",而是程序中的一个步骤(可能是唯一的步骤)告诉Spark如何获取数据以及如何处理数据.