定义
RDD是弹性分布式数据集(Resilient Distributed Dataset), RDD 其实就是分布式的元素集合。就像List,Array,Set,Map集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、 转化已有 RDD 以及调用 RDD 操作进行求值。而在这一切背后, Spark 会自动将RDD中的数据分发到集群上,并将操作并行化执行。
用户可以使用两种方法创建 RDD: 读取一个外部数据集,或在驱动器程序里分发驱动器程序中的对象集合(比如 list 和 set) ;
RDD是只读的。一旦生成就不能修改;
RDD可以通过重新计算得到;
举个栗子,读取文件ReadME.md数据
》lines = sc.textFile("README.md")
》pythonLines = lines.filter(lambda line: "Python" in line)
Spark 只会惰性计算这些 RDD ,也就是它们只有第一次在一个行动操作中用到时,才会真正计算 。这样的好处是上面例子我们以一个文本文件定义了数据,然后把其中包含 Python 的行筛选出来。如果 Spark 在我们运行 lines= sc.textFile(…) 时就把文件中所有的行都读取并存储起来, 就会消耗很多存储空间,而我们马上就要筛选掉其中的很多数据。相反, 一旦 Spark 了解了完整的转化操作链之后,它就可以只计算求结果时真正需要的数据。事实上,在行动操作 first() 中, Spark 只需要扫描文件直到找到第一个匹配的行为止,而不需要读取整个文件 。默认情况下, Spa