Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python的Spark:将RDD输出保存到文本文件中_Python_Apache Spark_Pyspark - Fatal编程技术网

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

使用Python的Spark:将RDD输出保存到文本文件中,python,apache-spark,pyspark,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()) c

我正在使用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")

因为您收集了
results=sortedwordscont.collect()
所以它不是RDD。它将是普通的python列表或元组

正如您所知,
list
是python对象/数据结构,
append
是添加元素的方法

>>> x = []
>>> x.append(5)
>>> x
[5]
类似地,
RDD
是sparks对象/数据结构,
saveAsTextFile
是写入文件的方法。重要的是它的分布式数据结构

所以,我们不能在RDD上使用
append
,也不能在列表上使用
saveAsTextFile
collect
是RDD上获取RDD到驱动程序内存的方法


如评论中所述,使用saveAsTextFile保存
SortedWordScont
,或用python打开文件,并使用
results
写入文件

results=SortedWordScont.collect()
更改为
results=SortedWordScont
,因为使用
.collect()
结果将是一个列表。

问题出在哪里,您能显示错误吗?请正确格式化您的问题,突出显示代码回溯(最后一次调用):文件“/home/cloudera/PythonTask/sorteddata.py”,第24行,在results.saveAsTextFile(“var/www/myoutput”)AttributeError:“list”对象没有“saveAsTextFile”属性,请尝试保存
SortedWordScont
代替。谢谢大家的帮助。谢谢您的建议。因此,请告诉我现在应该如何将结果存储在文本文件中。事实上,我是python编程新手,所以对此不太了解。