链接:https://www.zybuluo.com/jewes/note/35032
对RDD,和RDD中map,reduce等API的理解
我的理解如下:
RDD:
Resilient Distributed Datasets(弹性分布式数据集)
把所有数据抽象成RDD,可以看做是一个不连续的数组,这样子就可以分区存了。
如
scala> val a = sc.parallelize(1 to 9, 3)
这样子就可以分布到不同机器==》并行处理了。然后对数据进行操作就是对RDD进行变换。然后输出结果。
但是如何把数据变成RDD之后带来了几个问题。
如何保证运算后的正确性
容错率有多高?
见作者的论文。https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf
map:
将RDD中的每个元素映射到新的RDD中,map中可给一个映射函数,对象是每个元素
但如果不想操作每个元素呢
出现了mappartitions,按分区操作
还有mapvalues等
reduce:
讲RDD中两两元素通过输入函数后,变成一个,然后与接下来一个继续运算,直到剩下最后一个元素
变形如:
reduceByKey