E/S de fase alta de Spark

A continuación, examine las estadísticas de E/S de la fase más larga de nuevo:

E/S de fase alta de E/S de larga fase

¿Qué es la E/S alta?

¿Cuántos datos deben estar en una columna de E/S que se debe considerar alta? Para averiguarlo, empiece por el número más alto de cualquiera de las columnas especificadas. A continuación, tenga en cuenta el número total de núcleos de CPU que tiene en todos sus trabajadores. Por lo general, cada núcleo puede leer y escribir aproximadamente 3 MB por segundo.

Divida la columna de E/S más grande por el número de núcleos de trabajo del clúster y, a continuación, divida eso por segundos de duración. Si el resultado ronda los 3 MB, es probable que tengas un cuello de botella de E/S. Eso sería una E/S alta.

Entrada alta

Si observa una gran cantidad de entradas en su etapa, eso significa que está dedicando mucho tiempo a leer datos. En primer lugar, identifique qué datos está leyendo esta fase. Consulte Identificación de una lectura costosa en el DAG de Spark.

Después de identificar los datos específicos, estos son algunos enfoques para acelerar las lecturas:

Rendimiento alto

Si observas mucha salida de tu etapa, eso significa que estás dedicando mucho tiempo a escribir datos. Estos son algunos enfoques para resolver esto:

Orden aleatorio alto

Databricks recomienda establecer spark.sql.shuffle.partitions=auto para que Spark elija automáticamente el número óptimo de particiones shuffle. Si no está familiarizado con el shuffle, este es el momento de aprender.

Sin E/S alta

Si no observas una E/S elevada en ninguna de las columnas, tendrás que profundizar más en el análisis. Consulte Fase de Spark lenta con poca E/S.