Hola yo estoy usando la Chispa de SQL en realidad hiveContext.sql() que utiliza el grupo por consultas y estoy corriendo en OOM problemas. Así que pensando en el aumento de valor de spark.sql.shuffle.partitions de 200 defecto a 1000 pero no está ayudando. Por favor me corrija si me equivoco este particiones compartir los datos shuffle carga de modo más las particiones menos datos de los que espera. Por favor, guía soy nuevo en Chispa. Estoy usando la Chispa de la versión 1.4.0 y tengo alrededor de 1 TB de datos sin comprimir a proceso mediante hiveContext.sql() grupo por las consultas.

InformationsquelleAutor u449355 | 2015-09-02

4 Comentarios

  1. 47

    Si se está quedando sin memoria en el shuffle, pruebe a establecer spark.sql.shuffle.partitions a 2001.

    Chispa utiliza un tipo diferente de estructura de datos para shuffle libro de mantenimiento cuando el número de particiones es mayor que en el año 2000:

    private[spark] object MapStatus {
    
      def apply(loc: BlockManagerId, uncompressedSizes: Array[Long]): MapStatus = {
        if (uncompressedSizes.length > 2000) {
          HighlyCompressedMapStatus(loc, uncompressedSizes)
        } else {
          new CompressedMapStatus(loc, uncompressedSizes)
        }
      }
    ...
    

    Realmente me gustaría que permiten configurar de forma independiente.

    Por el camino, me encontré con esta información en un Cloudera deslice la cubierta.

  2. 9

    OK, así que yo creo que tu problema es más general. No es específico para encender la Chispa de SQL, es un problema general con la Chispa donde se ignora el número de particiones que decirle que cuando los archivos son pocos. Chispa parece tener el mismo número de particiones como el número de archivos HDFS, a menos que se llame repartition. Por lo que llamar a repartition debería funcionar, pero tiene la salvedad de causar un shuffle algo innecesariamente.

    He planteado esta pregunta hace un tiempo y aún sin embargo, para obtener una buena respuesta 🙁

    Chispa: aumentar el número de particiones sin causar un shuffle?

    • Hay una referencia para apoyar la afirmación de que «la Chispa parece tener el mismo número de particiones como el número de archivos HDFS»?
    • Ejecución de la Chispa de puestos de trabajo en HDFS por alrededor de 3 años 😛 Pero sí me gustaría ver una referencia demasiado, es sólo una de esas cosas que he llegado a tratar como un hecho sin siquiera ver a ninguno de documentación explícita.
    • De acuerdo a la documentación hay es una propiedad spark.sql.files.maxPartitionBytes que dictaría el número de particiones cuando la carga de datos de HDFS
    • cerca de la parte inferior del artículo 0x0fff.com/spark-architecture es cierto debate acerca de cómo particionar funciona cuando la lectura en los archivos.
    • (haciendo de esta nota para ayudar a otros que vienen a través de este hilo): el número de particiones cuando la carga de datos de HDFS NO se rige por spark.sql.files.maxPartitionBytes. En lugar dictado por la HDFS tamaño de bloque y puede ser incrementado por el aumento de mapreduce.job.maps
  3. 4

    Es realmente depende de sus datos y su consulta, si la Chispa debe cargar de 1 tb, hay algo mal en su diseño.

    El uso de la superbe la interfaz de usuario web para ver el DAG, decir cómo Chispa es la traducción de la consulta SQL para el empleo/etapas y tareas.

    De medidas útiles son la «Entrada» y «Shuffle».

    • La partición de los datos (Colmena /estructura de directorios como /año=X/mes=X)
    • Uso chispa CLUSTER BY característica, para trabajar por partición de datos
    • Uso ORC /Parqué formato de archivo porque proporcionan «Push-down filtro», datos inútiles no está cargado a Chispa
    • Analizar la Chispa de la Historia para ver cómo Chispa es la lectura de los datos

    También, OOM que podría suceder en el conductor?

    -> este es otro tema, el conductor le recogerá en el final de los datos que desee. Si usted pide demasiados datos, el conductor le OOM, trate de limitar su consulta, o escribir otra tabla (la Chispa de la sintaxis CREATE TABLE ...AS).

  4. 0

    Me encontré con este post de Cloudera acerca de la Colmena de Partición. Echa un vistazo a los «Punteros» de la sección hablando sobre el número de particiones y el número de archivos en cada partición resultante en la sobrecarga del nombre de nodo, lo que podría provocar OOM.

Dejar respuesta

Please enter your comment!
Please enter your name here