键值对的keys()和values()操作与python字典一样。
虽然同过count可以直接算出单词个数,但对每个具体字符的字符个数count未知,count只适合评估文件大小
import sys
from pyspark import SparkContext
if __name__ == "__main__":
master = "local"
if len(sys.argv) == 2:
master = sys.argv[1]
try:
sc.stop()
except:
pass
sc = SparkContext(master, 'test')
RDD1= sc.textFile('README.md')
#统计所有字符个数
print(RDD1.flatMap(lambda x:x.split()).count())
#取10行
print(RDD1.take(10))
#对文章进行切分
words = RDD1.flatMap(lambda x: x.split())
#取10个元素
print(words.take(10))
#建立键值对,合并相同键值对
result = words.map(lambda x: (x, 1)).reduceByKey(lambda x, y: x + y)
#输出单词与单词数
# print(result.collect())
print(result.values().reduce(lambda x, y : x+y))
print(sum(RDD1.flatMap(lambda x:x.split()).countByValue().values()))
nums = words.map(lambda x: (x, 1))
result = nums.combineByKey((lambda x: (x,1)),
(lambda x, y: (x[0] + y, x[1] + 1)),
(lambda x, y: (x[0] + y[0], x[1] + y[1])))
print(result.map(lambda key, xy: (key, xy[0]/xy[1])).collectAsMap())
这里用了三种方式对单词进行统计