Cómo puedo forzar Chispa para ejecutar código?

Cómo puedo forzar Chispa para ejecutar una llamada a la mapa, incluso si piensa que no necesita ser ejecutado debido a su evaluación diferida?

He intentado poner cache() con el mapa de llamar, pero que todavía no hace el truco. Mi método de asignación de carga realmente los resultados a HDFS. Así, no es inútil, pero la Chispa piensa que es.

  • Esta pregunta sufre el mismo problema que el anterior: sin código para trabajar con el. Por favor enviar el código de ejemplo. También, si esto está relacionado con el mismo problema, no abra una nueva pregunta.
  • Que es una pregunta general. Básicamente, cómo detener la Chispa de hacer suposiciones y ejecutar cualquier código que me das.
  • No podemos saber qué supuestos Chispa está haciendo sin el código que usted reclama es hacer suposiciones acerca de. Publicar el código, por favor.
  • Acaba de salir de interés, ¿por qué quieres esto? Chispa Chispa con una cierta cosa en mente.

2 Kommentare

  1. 33

    Respuesta corta:

    A fuerza de Chispa para ejecutar una transformación, tendrás que requieren de un resultado. A veces un simple count acción es suficiente.

    TL;DR:

    Ok, vamos a revisar la RDD operaciones.

    RDDel apoyo de dos tipos de operaciones:

    • transformaciones – que crear un nuevo conjunto de datos a partir de uno existente.
    • acciones – que devuelven un valor para el conductor del programa después de la ejecución de un cálculo en el conjunto de datos.

    Por ejemplo, map es una transformación que pasa por cada elemento del conjunto de datos a través de una función y devuelve un nuevo RDD representación de los resultados. Por otro lado, reduce es una acción que los agregados de todos los elementos de la RDD el uso de alguna función y devuelve el resultado final para el programa del controlador (aunque también hay un paralelo reduceByKey que devuelve un conjunto de datos distribuidas).

    Todas las transformaciones en la Chispa se perezoso, en que no calculan sus resultados de inmediato.

    Lugar, que sólo recuerda las transformaciones que se aplican a algunos de la base de datos (por ejemplo, un archivo). Las transformaciones sólo se calcula cuando una acción se requiere un resultado de ser devuelto al conductor del programa. Este diseño permite la Chispa para que se ejecute de manera más eficiente, por ejemplo, podemos darnos cuenta de que un conjunto de datos creado a través de mapa será utilizado en reducir y devolver sólo el resultado de la reducción para el conductor, en lugar de los grandes mapeados conjunto de datos.

    Por defecto, cada transformado RDD de mayo se vuelve a calcular cada vez que se ejecuta una acción sobre él. Sin embargo, también puede persistir un RDD en la memoria usando el persist (o cache) método, en cuyo caso Chispa a mantener los elementos de su alrededor en el clúster para mucho más rápido acceso la próxima vez que usted consulta. También hay soporte para la persistencia RDDs en el disco, o se replican a través de múltiples nodos.

    Conclusión

    A fuerza de Chispa para ejecutar una llamada a la mapa, tendrás que requieren de un resultado. A veces un count acción es suficiente.

    Referencia

    • ¿Cuál es la diferencia entre persisten y caché? Y no son los RDDs conserva en la memoria de todos modos si se utilizan solamente una vez?
    • Con cache, utilice sólo el valor predeterminado nivel de almacenamiento MEMORY_ONLY. Con persist, puede especificar el nivel de almacenamiento que desee. Uso persist si desea asignar otro nivel de almacenamiento de MEMORY_ONLY a la RDD
    • Cómo sobre el uso de «tomar» para activar la persistir ? Hice un experimento con la versión 1.6.1, «count» tendrían una etapa más (compuesto de shuffle y agregado)de «tomar». Así que creo que es más eficiente mediante el uso de la «toma» de la acción.
    • Hay una lista de todas las acciones en algún lugar?
    • href=»https://spark.apache.org/docs/2.1.1/programming-guide.html#actions» >spark.apache.org/docs/2.1.1/programming-guide.html#actions da las más comunes, y debe haber un enlace a la documentación para una lista exhaustiva para que, independientemente del lenguaje de uso
    • Que es útil para el más común, pero sería bueno tener una lista exhaustiva de las acciones.
    • ¿qué significa a veces? me gustaría saber más acerca de las condiciones en las que un recuento de acción no desencadenar intermedio mapa pasos.

  2. 14

    Chispa transformaciones sólo describir lo que se ha hecho. Para activar una ejecución que necesita un acción.

    En tu caso, hay un problema más profundo. Si la meta es crear algún tipo de efecto secundario, como el almacenamiento de datos en HDFS, el método correcto a utilizar es foreach. Es a la vez una acción y tiene una limpieza de la semántica. Lo que también es importante, a diferencia de map, no implica transparencia referencial.

    • Sería foreach también se ejecutan en paralelo? Puedes dar algún ejemplo?
    • Sí, se ejecuta en paralelo en los nodos de trabajo. La cosa más simple es el de registro o impresión de las cosas. El Uso De PySpark: from __future__ import print_function; rdd.foreach(print). Otra opción es foreachPartition.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea