Spark RDD编程(2)

1. 创建RDD

并行集合进行创建,或者读取外部文件进行创建

rdd = sc.textFile('/data/word.txt')
nums = [1,2,3,4,5]
rdd = sc.parallelize(nums)

2. RDD操作

转换:

操作 含义
filter(func) 筛选满足函数的元素
map(func)
flatMap(func)
groupByKey(func)
reduceByKey(func)

行动操作:
真正触发计算。

操作 含义
count() 计数
collect() 以数组的形式返回数据集的所有元素
first() 返回第一个元素
take(n) 以数组形式返回前n个元素
reduce(n) 通过func集中的元素
foreach(func) 每个元素传递到func中运行

统计文档单行的单词最多数量。

words = sc.textFile('/data/word.txt')
words.map(lambda x:len(x.split(" "))).reduce(lambda a,b:(a > b and a or b))

3. 持久性

由于spark的惰性机制,导致每次的行动,都得从头到尾运行,如果碰到多次的操作,效率很低。一个方法是把上一次行动保存到内存。

list = ["Hadoop", "Spark", "Hive"]
rdd = sc.parallelize(list)
rdd.cache()
print(rdd.count())
print(",".join(rdd.collect()))

运行结果:

3
'Hadoop,Spark,Hive'

参考:

  1. Spark2.1.0+入门:RDD编程(Python版);
发布了514 篇原创文章 · 获赞 152 · 访问量 77万+

猜你喜欢

转载自blog.csdn.net/rosefun96/article/details/105497150