¿Cómo detecta esquemas el rastreador de AWS Glue?

Última actualización: 27/08/2021

Estoy ejecutando un rastreador de AWS Glue. El rastreador genera varias tablas aunque los esquemas tengan un aspecto similar. Quiero saber de qué modo mi rastreador detecta esquemas.

Resolución

Al ejecutarse, el rastreador de AWS Glue hace lo siguiente:

  1. Clasifica los datos
  2. Agrupa los datos en tablas o particiones
  3. Escribe metadatos en el catálogo de datos de AWS Glue

Revise lo siguiente para saber qué sucede al ejecutar el rastreador y cómo este detecta el esquema.

Definición de rastreador

Al definir un rastreador de AWS Glue, puede elegir uno o varios clasificadores personalizados que evalúan el formato de los datos para inferir un esquema. Cuando se ejecuta el rastreador, el primer clasificador de la lista que reconoce correctamente el almacén de datos se utiliza para crear un esquema para la tabla. Antes de definir el rastreador, debe definir los clasificadores personalizados. Cuando se ejecuta el rastreador, este utiliza el clasificador personalizado que ha definido para buscar una concordancia en el almacén de datos. La concordancia con cada clasificador genera una certeza. Si el clasificador devuelve certainty=1.0 (certeza: 1,0) durante el procesamiento, el rastreador está 100 % seguro de que el clasificador puede crear el esquema correcto. En este caso, el rastreador deja de invocar otros clasificadores y, a continuación, genera una tabla con el clasificador que coincide con el clasificador personalizado.

Si AWS Glue no encuentra un clasificador personalizado que se ajuste al formato de datos de entrada con un 100 % de certeza, AWS Glue invoca los clasificadores integrados. El clasificador integrado devuelve certainty=1.0 (certeza=1,0) si el formato coincide, ocertainty=0.0 (certeza=0,0) si el formato no coincide. Si ningún clasificador devuelve certainty=1.0 (certeza=1,0), AWS Glue utiliza la salida del clasificador con la certeza mayor. Si ningún clasificador devuelve una certeza superior a 0,0, AWS Glue devuelve la cadena de clasificación predeterminada UNKNOWN. Para obtener la lista actual de clasificadores integrados en AWS Glue y el orden en que se invocan, consulte Clasificadores integrados en AWS Glue.

Detección de esquemas con el rastreador

Durante la primera ejecución del rastreador, este lee los primeros 1000 registros o el primer megabyte de cada archivo para inferir el esquema. La cantidad de datos leídos depende del formato del archivo y de la disponibilidad de un registro válido. Por ejemplo, si el archivo de entrada es un archivo JSON, el rastreador lee el primer MB del archivo para inferir el esquema. Si se lee un registro válido dentro del primer MB del archivo, el rastreador infiere el esquema. Si el rastreador no puede inferir el esquema después de leer el primer MB, lee hasta un máximo de 10 MB del archivo, aumentando de a 1 MB. En el caso de los archivos CSV, el rastreador lee los primeros 100 registros o el primer MB de datos, lo que ocurra primero. En el caso de los archivos Parquet, el rastreador infiere el esquema directamente del archivo. El rastreador compara los esquemas inferidos de todas las subcarpetas y archivos y genera una o varias tablas. Cuando un rastreador genera una tabla, tiene en cuenta los siguientes factores:

  • Compatibilidad de los datos para comprobar si estos tienen el mismo formato, tipo de compresión y ruta de inclusión
  • Similitud de los esquemas para comprobar qué tan similares son los esquemas en términos de umbral de partición y número de esquemas diferentes

Para que los esquemas se consideren similares, deben cumplirse las siguientes condiciones:

  • El umbral de partición es superior a 0,7 (70 %).
  • El número máximo de esquemas diferentes (también denominados “clústeres” en este contexto) no supera 5.

El rastreador infiere el esquema a nivel de carpeta y compara los esquemas de las diferentes carpetas. Si los esquemas que se comparan coinciden, es decir, si el umbral de partición es superior al 70 %, los esquemas se indican como particiones de una tabla. Si no coinciden, el rastreador genera una tabla para cada carpeta, generando así un número más elevado de tablas.

Escenarios de ejemplo

Ejemplo 1: supongamos que la carpeta DOC-EXAMPLE-FOLDER1 tiene 10 archivos, 8 de ellos con esquema SCH_A y los otros 2, con SCH_B.

Supongamos que los archivos con el esquema SHC_A son similares a esto:

{ "id": 1, "first_name": "John", "last_name": "Doe"}
{ "id": 2, "first_name": "Li", "last_name": "Juan"}

Supongamos que los archivos con el esquema SCH_B son similares a esto:

{"city":"Dublin","country":"Ireland"}
{"city":"Paris","country":"France"}

Cuando el rastreador rastrea la ruta de Amazon Simple Storage Service (Amazon S3) s3://DOC-EXAMPLE-FOLDER1, este genera una tabla. La tabla consta de columnas para los esquemas SCH_A y SCH_B. Esto se debe a que el 80 % de los archivos de la ruta pertenecen al esquema SCH_A y el 20 % restante, al esquema SCH_B. Por lo tanto, se cumple el valor umbral de partición. Además, el número de esquemas diferentes no ha superado el número de clústeres y el límite de tamaño del clúster no se ha superado.

Ejemplo 2: supongamos que la carpeta DOC-EXAMPLE-FOLDER2 tiene 10 archivos, 7 de ellos con el esquema SCH_A y los 3 restantes, con el esquema SCH_B.

Cuando el rastreador rastrea la ruta de Amazon S3 s3://DOC-EXAMPLE-FOLDER2, este genera una tabla para cada archivo. Esto se debe a que el 70 % de los archivos pertenecen al esquema SCH_A y el 30 % restante, al esquema SCH_B. Esto significa que no se cumple el umbral de partición. Puede consultar los registros del rastreador en Amazon CloudWatch para obtener información sobre las tablas generadas.

Opciones de rastreador

  • Crear un solo esquema: para configurar el rastreador de modo que ignore la similitud del esquema y cree solo un esquema, utilice la opción Crear un solo esquema para cada ruta de S3. Para obtener más información, consulte Cómo crear un esquema para cada ruta de inclusión de Amazon S3. Sin embargo, si el rastreador detecta incompatibilidad entre los datos, el rastreador seguirá generando numerosas tablas.
  • Especificar la ubicación de la tabla: la opción de rastreador a nivel de tabla le permite indicar al rastreador dónde se encuentran las tablas y cómo se crearán las particiones. Al especificar un valor de Table level (Nivel de tabla), la tabla se crea en ese nivel absoluto a partir del bucket de Amazon S3. Al configurar el rastreador en la consola, puede especificar un valor para la opción de rastreador Table level (Nivel de tabla). El valor debe ser un entero positivo que indique la ubicación de la tabla (el nivel absoluto en el conjunto de datos). El nivel de la carpeta de nivel superior es 1. Por ejemplo, para la ruta mydataset/a/b, si el nivel está establecido en 3, la tabla se genera en la ubicación mydataset/a/b. Para obtener más información, consulte Cómo especificar la ubicación de la tabla.

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?