El conjunto de datos original es:

# (numbersofrating,title,avg_rating)
newRDD =[(3,'monster',4),(4,'minions 3D',5),....] 

Quiero seleccione superior N avg_ratings en newRDD.Yo uso el siguiente código,tiene un error.

selectnewRDD = (newRDD.map(x, key =lambda x: x[2]).sortBy(......))

TypeError: map() takes no keyword arguments

La espera de los datos debe ser:

# (numbersofrating,title,avg_rating)
selectnewRDD =[(4,'minions 3D',5),(3,'monster',4)....] 

OriginalEl autor user3849475 | 2015-08-07

2 Comentarios

  1. 11

    Usted puede utilizar cualquiera de los top o takeOrdered con key argumento:

    newRDD.top(2, key=lambda x: x[2])

    o

    newRDD.takeOrdered(2, key=lambda x: -x[2])

    Nota que top es tomar los elementos en orden descendente y takeOrdered en orden ascendente, de modo key función es diferente en ambos casos.

    cuando imprimo newRDD.la parte superior(2, clave=lambda x: x[2]).tomar(1) hay un error:AttributeError: ‘lista’ el objeto no tiene ningún atributo ‘tomar’
    Así, el mensaje de error dice casi todo. top y takeIOrdered son acciones y recoger los datos para usted. Que significa la salida de un local de la estructura de datos no es un RDD.
    El error corregido.Gracias.
    Es posible hacer lo mismo con un dispositivo de este tipo, pero la retención de un RDD?

    OriginalEl autor zero323

  2. 2

    Has intentado usar ? Dado que usted desea que la parte superior de avg calificaciones (y es el tercer elemento de la tupla), necesitará asignar a la tecla de usar un lambda función.

    # items = (number_of_ratings, title, avg_rating)
    newRDD = sc.parallelize([(3, 'monster', 4), (4, 'minions 3D', 5)])
    top_n = 10
    >>> newRDD.top(top_n, key=lambda items: items[2])
    [(4, 'minions 3D', 5), (3, 'monster', 4)]
    top es una buena opción aquí, pero usted tendrá que agregar key función.
    Sí, por supuesto, estás en lo correcto. Mi rápido y sucio consiguió el resultado esperado, pero sólo porque el conjunto de datos pequeño.
    Si quiero te ordenan avg calificaciones en primer lugar, ¿qué debo hacer?
    No sé si entiendo tu pregunta. Los datos de la tupla trillizos de 1) número de puntuaciones, 2) título y 3) avg rating. Cuando usted dice ‘te ordenan avg clasificaciones de primera», ¿te refieres a cambiar el orden de los trillizos o los resultados obtenidos de la parte superior (que en la actualidad los ordena de mi avg clasificación de mayor a menor).
    Me refiero a que no consideran la selección de la parte superior N tuplas.Acaba de ordenar este RDD por avg calificaciones

    OriginalEl autor Alexander

Dejar respuesta

Please enter your comment!
Please enter your name here