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'
参考: