Estoy recibiendo este error, pero no sé por qué.
Básicamente estoy erroring de este código:

    a = data.mapPartitions(helper(locations))

donde datos es un dispositivo de este tipo y mi ayudante se define como:

    def helper(iterator, locations): 
        for x in iterator:
            c = locations[x]
            yield c

(lugares es sólo un conjunto de puntos de datos)
No veo cuál es el problema, pero yo no soy también el mejor en pyspark así que por favor alguien puede decirme por qué me estoy poniendo ‘PipelinedRDD’ el objeto no es iterable de este código?

  • No se puede recorrer en un dispositivo de este tipo en la forma de hacer. Pls echar un vistazo a stackoverflow.com/questions/25914789/…
  • gracias yo creo que la idea ahora, pero yo todavía estoy recibiendo el mismo error. Ahora estoy llamando a esto: a = datos.mapPartitions(lambda iterador: ayudante(iterator, ubicaciones)). ¿Qué otra cosa estoy haciendo mal?
InformationsquelleAutor deeformvp | 2016-04-19

2 Comentarios

  1. 2

    RDD puede afirmar mediante mapa y las funciones lambda. He reiterado a través de Canalizadas RDD utilizando el siguiente método

    lines1 = sc.textFile("\..\file1.csv")
    lines2 = sc.textFile("\..\file2.csv")
    
    pairs1 = lines1.map(lambda s: (int(s), 'file1'))
    pairs2 = lines2.map(lambda s: (int(s), 'file2'))
    
    pair_result = pairs1.union(pairs2)
    
    pair_result.reduceByKey(lambda a, b: a + ','+ b)
    
    result = pair.map(lambda l: tuple(l[:1]) + tuple(l[1].split(',')))
    result_ll = [list(elem) for elem in result]

    ===> result_ll = [lista(elem) para elem en consecuencia]

    TypeError: ‘PipelinedRDD’ el objeto no es iterable

    Lugar de esto he sustituido la iteración utilizando la función de mapa de

    result_ll = result.map( lambda elem: list(elem))

    Espero que esto ayude a modificar su código en consecuencia

  2. 1

    Prefiero la respuesta que dijo en otra pregunta con el siguiente link :
    No puede tener acceso Canalizado Rdd en pyspark

    Usted no puede iterar a través de un dispositivo de este tipo, primero es necesario llamar a una acción para recuperar los datos para el conductor.
    Rápido de la muestra:

    `>>> test = sc.parallelize([1,2,3])
     >>> for i in test:
         ...    print i
         ... 
         Traceback (most recent call last):
         File "<stdin>", line 1, in <module>
         TypeError: 'RDD' object is not iterable`

    pero, por ejemplo, puede utilizar».collect()’

    `>>> for i in test.collect():
         ...      print i
     1                                                                               
     2
     3`

Dejar respuesta

Please enter your comment!
Please enter your name here