视频字幕
RDD,即弹性分布式数据集,是Apache Spark的核心数据结构。它提供了一种分布式的、容错的数据集合抽象。我们的初始数据bookRDD包含四个键值对,每个键值对表示一本书的名称和对应的销售数量。例如spark销售了2本和6本,hadoop销售了6本和4本。
第一步是map转换操作。这个操作使用lambda函数将每个原始元素转换为新的格式。具体来说,原来的键值对如spark 2,会被转换为spark括号2逗号1。这里添加的数字1是一个计数器,表示这是一次销售记录。这样的转换为后续的聚合操作做准备,使我们能够同时累加销售数量和销售次数。
reduceByKey是Spark中的关键聚合操作。它首先按键对数据进行分组,然后对每组数据执行聚合函数。对于spark键,我们有两个元素:2逗号1和6逗号1,聚合后得到8逗号2,表示总销量8,销售次数2。同样,hadoop键的两个元素6逗号1和4逗号1聚合后得到10逗号2,表示总销量10,销售次数2。
最后一步是计算平均销量的map操作。这个操作从每个键值对中提取总销量和销售次数,然后计算平均值。对于spark,总销量是8,销售次数是2,所以平均销量是8除以2等于4.0。对于hadoop,总销量是10,销售次数是2,平均销量是10除以2等于5.0。最终我们得到每本书的平均销量结果。
让我们回顾整个Spark RDD处理流程。从初始的书籍销售数据开始,经过map转换添加计数器,然后通过reduceByKey按书名聚合数据,再用map计算平均销量,最后用foreach输出结果。这个过程体现了Spark函数式编程的特点:使用不可变的数据结构,通过链式转换操作处理数据,并采用延迟计算来优化性能。这种模式在大数据分析中非常实用和高效。