我正在使用python尝试使用spark计算单词计数问题.但是当我尝试使用.saveAsTextFile命令将输出RDD保存在文本文件中时,我遇到了问题.这是我的代码.请帮我.我被卡住了.感谢您的时间.
import re from pyspark import SparkConf , SparkContext def normalizewords(text): return re.compile(r'\W+',re.UNICODE).split(text.lower()) conf=SparkConf().setMaster("local[2]").setAppName("sorted result") sc=SparkContext(conf=conf) input=sc.textFile("file:///home/cloudera/PythonTask/sample.txt") words=input.flatMap(normalizewords) wordsCount=words.map(lambda x: (x,1)).reduceByKey(lambda x,y: x+y) sortedwordsCount=wordsCount.map(lambda (x,y):(y,x)).sortByKey() results=sortedwordsCount.collect() for result in results: count=str(result[0]) word=result[1].encode('ascii','ignore') if(word): print word +"\t\t"+ count results.saveAsTextFile("/var/www/myoutput")
WoodChopper.. 7
因为你收集了results=sortedwordsCount.collect()
它,它不是RDD.这将是普通的python列表或元组.
你知道的list
是python对象/数据结构,append
是添加元素的方法.
>>> x = [] >>> x.append(5) >>> x [5]
同样
RDD
是sparks对象/数据结构,saveAsTextFile
是写文件的方法.重要的是它的分布式数据结构.
所以,我们不能append
在RDD或saveAsTextFile
列表上使用.collect
是RDD上的方法来获取RDD到驱动程序内存.
如注释中所述,sortedwordsCount
使用saveAsTextFile 保存或在python中打开文件并用于results
写入文件
因为你收集了results=sortedwordsCount.collect()
它,它不是RDD.这将是普通的python列表或元组.
你知道的list
是python对象/数据结构,append
是添加元素的方法.
>>> x = [] >>> x.append(5) >>> x [5]
同样
RDD
是sparks对象/数据结构,saveAsTextFile
是写文件的方法.重要的是它的分布式数据结构.
所以,我们不能append
在RDD或saveAsTextFile
列表上使用.collect
是RDD上的方法来获取RDD到驱动程序内存.
如注释中所述,sortedwordsCount
使用saveAsTextFile 保存或在python中打开文件并用于results
写入文件