1. 完整实现流程
# 1. 读取文本文件
rdd1 = sc.textFile('file:///usr/local/spark/licenses/LICENSE-py4j.txt')
# 2. 拆分单词(flatMap展平)
rdd2 = rdd1.flatMap(lambda x: x.split(' '))
# 3. 映射为键值对(map转换)
rdd3 = rdd2.map(lambda x: (x, 1))
# 4. 按单词聚合计数(reduceByKey聚合)
rdd4 = rdd3.reduceByKey(lambda a,b: a+b)
# 5. 收集结果(action操作)
result = rdd4.collect()
for word, count in result:
print(f"{word}: {count}")
2. 数据处理流程解析
textFile:从文件系统创建RDD,每行文本作为一个元素
flatMap:将每行文本拆分为单词并展平
map:将每个单词转换为(word, 1)的键值对
reduceByKey:对相同单词的计数进行累加
collect:触发计算并收集结果