当前位置:  开发笔记 > 编程语言 > 正文

使用Python的Spark:将RDD输出保存到文本文件中

如何解决《使用Python的Spark:将RDD输出保存到文本文件中》经验,为你挑选了1个好方法。

我正在使用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写入文件



1> WoodChopper..:

因为你收集了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写入文件

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有