Necesito convertir una columna de la Chispa de la dataframe lista para usar más tarde para matplotlib

df.toPandas()[col_name].values.tolist()

parece que hay un alto nivel de sobrecarga en el rendimiento de esta operación tarda alrededor de 18sec
hay otra manera de hacerlo o mejorar la perfomance?

  • Supongo que la sobrecarga de rendimiento es más bien en toPandas() ya que es la primera acción en la cadena.
  • Y ¿qué puedo hacer al respecto?
  • La cantidad de datos que tienes en que una columna? Spark tiene que enviar todos los datos para que una columna para el conductor (más de serialización/de la serialización de sobrecarga). Está usted usando kryo la serialización? Si no lo permiten.
InformationsquelleAutor Yakov | 2016-02-12

2 Comentarios

  1. 4

    Si usted realmente necesita una lista local no hay mucho que se puede hacer aquí, pero una de las mejoras es la de recoger sólo una sola columna no DataFrame:

    df.select(col_name).flatMap(lambda x: x).collect()
    • En realidad no me ayudó.Tal vez algo más se podría hacer?
    • Aparte de la caída de una idea? De verdad que no. ¿Por qué quieres una lista local?
    • para matplotlib tal vez hay alguna otra manera
    • Bueno, para empezar usted puede verificar su cartera. ¿Hay alguna razón para esperar una ejecución más rápida? ¿Caché de reutilizar los datos? Otros que considere el uso más inteligente de las técnicas de visualización (muestreo, la creación de depósitos, los diferentes métodos de extrapolación, sombreado) que no requieren de datos completo. La cantidad de datos que recopilamos ahora?
  2. 4

    Puede hacerlo de esta manera:

    >>> [list(row) for row in df.collect()]

    Ejemplo:

    >>> d = [['Alice', 1], ['Bob', 2]]

    >>> df = spark.createDataFrame(d, ['name', 'age'])

    >>> df.show()

    +-----+---+

    | name|age|

    +-----+---+

    |Alice| 1|

    | Bob| 2|

    +-----+---+

    >>> to_list = [list(row) for row in df.collect()]

    print list

    Resultado: [[u'Alice', 1], [u'Bob', 2]]

    • Mientras que este código puede responder a la pregunta, proporcionar contexto adicional sobre cómo y/o por qué se resuelve el problema podría mejorar la respuesta del valor a largo plazo. Por favor, lea este ¿cómo responder para proporcionar una calidad de respuesta.

Dejar respuesta

Please enter your comment!
Please enter your name here