Estoy tratando de la palabra problema de recuento en la chispa usando python. Pero me estoy enfrentando el problema cuando intento guardar la salida de RDD en un archivo de texto utilizando .saveAsTextFile comando. Aquí está mi código. Por favor me ayude. Estoy atascado. Agradezco por su tiempo.

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")
  • ¿cuál es el problema, se puede mostrar el error, por favor?
  • Por favor, formato correctamente a su pregunta destacando el código
  • Traceback (la mayoría de llamada reciente last): File «/home/cloudera/PythonTask/sorteddata.py», la línea 24, en <módulo> resultados.saveAsTextFile(«var/www/myoutput») AttributeError: ‘lista’ el objeto no tiene ningún atributo ‘saveAsTextFile’
  • Intente guardar sortedwordsCount lugar
  • Gracias a todos por toda su ayuda.
  • ahorro de sortedwordsCount atlast me ayudó.

1 Comentario

  1. 7

    desde la recogida results=sortedwordsCount.collect() así, no RDD. Será normal python lista o tupla.

    Como usted sabe list es objeto de python/estructura de datos y append es el método para agregar elemento.

    >>> x = []
    >>> x.append(5)
    >>> x
    [5]

    Del mismo modo RDD se chispas objeto/estructura de datos y saveAsTextFile es el método para escribir el archivo. Importante es su distribuida estructura de datos.

    Así, no podemos utilizar append en RDD o saveAsTextFile en la lista. collect es el método en RDD para llegar a la DDR para el controlador de memoria.

    Como se ha mencionado en los comentarios, guardar sortedwordsCount con saveAsTextFile o abra el archivo en python y uso results para escribir en un archivo

    • Gracias por tu sugerencia. Así que por favor me diga cómo debo proceder ahora a almacenar el resultado en un archivo de texto. En realidad soy nuevo en chispa con la programación en python, así que no sé mucho acerca de esto.

Dejar respuesta

Please enter your comment!
Please enter your name here