Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A continuación, examine las estadísticas de E/S de la fase más larga de nuevo:
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:
- Use Delta.
- Utilice la agrupación en clústeres líquidos para mejorar el salto de datos. Consulte Uso de clústeres líquidos para tablas.
- Pruebe Photon. Puede ayudar mucho con la velocidad de lectura, especialmente para tablas amplias.
- Haga que la consulta sea más selectiva, por lo que no es necesario leer tantos datos.
- Reconsidera la estructura de tus datos para que el salto de datos sea más eficaz.
- Si está leyendo los mismos datos varias veces, use la caché delta.
- Si estás realizando una unión, plantéate intentar que DFP funcione.
- Aumente el tamaño del clúster o use el proceso sin servidor.
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:
- ¿Está reescribiendo muchos datos? Consulte Cómo determinar si Spark está reescribiendo datos para comprobarlo. Si va a reescribir muchos datos:
- Compruebe si tiene una combinación que necesita optimización.
- Use vectores de eliminación para marcar las filas existentes como eliminadas o modificadas sin volver a escribir el archivo Parquet.
- Habilite Photon si aún no lo está. Photon puede ayudar mucho con la velocidad de escritura.
- Aumente el tamaño del clúster o use el proceso sin servidor.
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.