RAC*_*TRO 4 python apache-spark pyspark
我正在使用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")
Run Code Online (Sandbox Code Playgroud)
因为你收集了results=sortedwordsCount.collect()它,它不是RDD.这将是普通的python列表或元组.
你知道的list是python对象/数据结构,append是添加元素的方法.
>>> x = []
>>> x.append(5)
>>> x
[5]
Run Code Online (Sandbox Code Playgroud)
同样
RDD是sparks对象/数据结构,saveAsTextFile是写文件的方法.重要的是它的分布式数据结构.
所以,我们不能append在RDD或saveAsTextFile列表上使用.collect是RDD上的方法来获取RDD到驱动程序内存.
如注释中所述,sortedwordsCount使用saveAsTextFile 保存或在python中打开文件并用于results写入文件
| 归档时间: |
|
| 查看次数: |
21211 次 |
| 最近记录: |