Preguntas frecuentes del cargador automático

Preguntas más frecuentes sobre el cargador automático de Databricks.

¿El cargador automático procesa el archivo de nuevo cuando el archivo se anexa o se sobrescribe?

Los archivos se procesan exactamente una vez, a menos que cloudFiles.allowOverwrites esté habilitado. Si un archivo se anexa o se sobrescribe, Azure Databricks no puede garantizar qué versión del archivo se procesará. También debe tener precaución al habilitar cloudFiles.allowOverwrites en el modo de notificación de archivos, donde el cargador automático podría identificar nuevos archivos a través de notificaciones de archivos y la lista de directorios. Debido a la discrepancia entre la hora del evento de notificación de archivo y la hora de modificación del archivo, el cargador automático puede obtener dos marcas de tiempo diferentes y, por lo tanto, ingerir el mismo archivo dos veces, incluso cuando el archivo solo se escribe una vez.

En general, Databricks recomienda que utilice el cargador automático solo para ingerir archivos inmutables y evitar establecer cloudFiles.allowOverwrites. Si esto no cumple sus requisitos, póngase en contacto con el equipo de la cuenta de Azure Databricks.

Si mis archivos de datos no llegan continuamente, sino a intervalos regulares, por ejemplo, una vez al día, ¿debo seguir utilizando este origen? ¿Hay alguna ventaja?

En este caso, puede configurar un trabajo de streaming estructurado Trigger.AvailableNow (disponible en Databricks Runtime 10.4 LTS y versiones superiores) y programarlo para que se ejecute después de la hora prevista de llegada del archivo. El cargador automático funciona bien tanto con actualizaciones poco frecuentes como con actualizaciones frecuentes. Incluso si las actualizaciones finales son muy grandes, el cargador automático se adapta bien al tamaño de la entrada. Las eficaces técnicas de detección de archivos y las capacidades de evolución de esquemas de cargador automático hacen que este sea el método recomendado para la ingesta de datos incremental.

¿Qué ocurre si cambio la ubicación del punto de control al reiniciar la secuencia?

La ubicación de un punto de control mantiene una importante información de identificación de una corriente. Cambiar la ubicación del punto de control de forma eficaz significa que ha abandonado la secuencia anterior e iniciado una nueva secuencia.

¿Es necesario crear previamente servicios de notificación de eventos?

No. Si elige el modo de notificación de archivos y proporciona los permisos necesarios, el cargador automático puede crear servicios de notificación de archivos automáticamente. Consulte ¿Qué es el modo de notificación de archivos de Auto Loader?.

¿Cómo se limpian los recursos de notificación de eventos creados por el cargador automático?

Puede usar el administrador de recursos en la nube para enumerar y destruir recursos. También puede eliminar estos recursos manualmente utilizando la interfaz de usuario o las API del proveedor de la nube.

¿Puedo ejecutar varias consultas de streaming desde directorios de entrada diferentes en el mismo cubo o contenedor?

Sí, siempre que no sean directorios primarios y secundarios; por ejemplo, prod-logs/ y prod-logs/usage/ no funcionarían porque /usage es un directorio secundario de /prod-logs.

¿Puedo usar esta característica cuando hay notificaciones de archivos existentes en mi cubo o contenedor?

Sí, siempre y cuando el directorio de entrada no entre en conflicto con el prefijo de notificación existente (por ejemplo, los directorios primarios y secundarios anteriores).

¿Qué hace el cargador automático para inferir el esquema?

Cuando se define el DataFrame por primera vez, el cargador automático muestra el directorio de origen y elige los 50 GB de datos o los 1000 archivos más recientes (por hora de modificación de los archivos) y los usa para inferir el esquema de datos.

El cargador automático también infiere columnas de partición mediante el examen de la estructura de los directorios de origen y busca rutas de acceso de archivo que contengan la estructura /key=value/. Si el directorio de origen tiene una estructura incoherente, por ejemplo:

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

El cargador automático infiere las columnas de partición como vacías. Use cloudFiles.partitionColumns para analizar explícitamente columnas de la estructura de directorios.

¿Cómo se comporta el cargador automático cuando la carpeta de origen está vacía?

Si el directorio de origen está vacío, el cargador automático le pide que proporcione un esquema, ya que no hay datos para realizar la inferencia.

¿En qué momento el cargador automático infiere el esquema? ¿Evoluciona automáticamente después de cada microlote?

El esquema se infiere cuando el DataFrame se define por primera vez en el código. Durante cada microlote, los cambios de esquema se evalúan sobre la marcha, por lo que no es necesario preocuparse por el impacto en el rendimiento. Cuando se reinicia la secuencia, recoge el esquema evolucionado de la ubicación del esquema y comienza a ejecutarse sin sobrecarga de inferencia.

Cuando se usa la inferencia de esquema del cargador automático, ¿cómo afecta al rendimiento de la ingesta de datos?

La inferencia de esquema podría tardar un par de minutos en el caso de directorios de origen muy grandes durante la inferencia inicial del esquema. Por lo demás, no debería observarse un impacto considerable en el rendimiento durante la ejecución de la secuencia. Si ejecuta el código en un cuaderno de Azure Databricks, puede ver actualizaciones de estado que especifican el momento en el que el cargador automático enumerará el directorio para el muestreo e inferirá del esquema de datos.

Debido a un error, un archivo incorrecto ha cambiado drásticamente el esquema. ¿Qué debo hacer para revertir un cambio de esquema?

Póngase en contacto con el soporte técnico de Databricks para solicitar ayuda.