Adición de clasificadores a un rastreador - AWS Glue

Adición de clasificadores a un rastreador

Un clasificador lee los datos en un almacén de datos. Si reconoce el formato de los datos, genera un esquema. El clasificador también devuelve un número de certeza para indicar el grado de certeza del reconocimiento del formato.

AWS Glue proporciona un conjunto de clasificadores integrados, pero también puede crear clasificadores personalizados. AWS Glue invoca clasificadores personalizados en primer lugar, en el orden especificado en su definición del rastreador. Según los resultados devueltos a partir de los clasificadores personalizados, AWS Glue también podría invocar clasificadores integrados. Si un clasificador devuelve certainty=1.0 durante el procesamiento, indica que puede crear el esquema correcto con una seguridad del 100 por ciento. A continuación, AWS Glue usa la salida de ese clasificador.

Si ningún clasificador devuelve certainty=1.0, AWS Glue usará la salida del clasificador con la mayor certeza. Si ningún clasificador devuelve una certeza mayor que 0.0, AWS Glue devolverá la cadena de clasificación predeterminada de UNKNOWN.

¿Cuándo uso un clasificador?

Se usan clasificadores al rastrear un almacén de datos para definir tablas de metadatos en el AWS Glue Data Catalog. Puede configurar su rastreador con un conjunto ordenado de clasificadores. Cuando el rastreador invoca un clasificador, el clasificador determina si se reconocen los datos. Si el clasificador no puede reconocer los datos o no es 100 % seguro, el rastreador invoca el siguiente clasificador de la lista para determinar si puede reconocer los datos.

Para obtener información adicional acerca de cómo crear un clasificador mediante la consola de AWS Glue, consulte Trabajo con clasificadores en la consola de AWS Glue.

Clasificadores personalizados

La salida de un clasificador incluye una cadena que indica la clasificación o el formato del archivo (por ejemplo, json) y el esquema del archivo. En el caso de los clasificadores personalizados, defina la lógica para crear el esquema en función del tipo de clasificador. Los tipos de clasificador incluyen la definición de esquemas en función de patrones de grok, etiquetas XML y rutas JSON.

Si cambia una definición de clasificador, no se vuelven a clasificar los datos que se rastrearon anteriormente con el clasificador. Un rastreador realiza un seguimiento de datos rastreados anteriormente. Los datos nuevos se clasifican con el clasificador actualizado, lo que podría dar lugar a un esquema actualizado. Si el esquema de sus datos ha evolucionado, actualice el clasificador para tener en cuenta los cambios de esquema cuando se ejecute el rastreador. Para volver a clasificar los datos con el fin de corregir un clasificador incorrecto, cree un nuevo rastreador con el clasificador actualizado.

Para obtener más información acerca de la creación de clasificadores personalizados en AWS Glue, consulte Escritura de clasificadores personalizados.

nota

Si uno de los clasificadores integrados reconoce el formato de sus datos, no es necesario que cree un clasificador personalizado.

Clasificadores integrados en AWS Glue

AWS Glue proporciona clasificadores integrados para diversos formatos, incluidos JSON, CSV, registros web y muchos sistemas de bases de datos.

Si AWS Glue no encuentra un clasificador personalizado que se adapte mejor al formato de datos de entrada con una seguridad del 100 por ciento, invoca los clasificadores integrados en el orden mostrado en la siguiente tabla. Los clasificadores integrados devuelven un resultado para indicar si el formato coincide (certainty=1.0) o no coincide (certainty=0.0). El primer clasificador con certainty=1.0 proporciona la cadena de clasificación y el esquema para una tabla de metadatos en su Data Catalog.

Tipo de clasificador Cadena de clasificación Notas
Apache Avro avro Lee el esquema al principio del archivo para determinar el formato.
Apache ORC orc Lee los metadatos de archivo para determinar el formato.
Apache Parquet parquet Lee el esquema al final del archivo para determinar el formato.
JSON json Lee el principio del archivo para determinar el formato.
JSON binario bson Lee el principio del archivo para determinar el formato.
XML xml Lee el principio del archivo para determinar el formato. AWS Glue determina el esquema de la tabla basado en etiquetas XML del documento.

Para obtener información acerca de la creación de un clasificador XML personalizado para especificar filas en el documento, consulte Escritura de clasificadores personalizados XML.

Amazon Ion ion Lee el principio del archivo para determinar el formato.
Registro Apache combinado combined_apache Determina los formatos de log a través de un patrón de grok.
Registro Apache apache Determina los formatos de log a través de un patrón de grok.
Registro de kernel de Linux linux_kernel Determina los formatos de log a través de un patrón de grok.
Registro de Microsoft microsoft_log Determina los formatos de log a través de un patrón de grok.
Registro de Ruby ruby_logger Lee el principio del archivo para determinar el formato.
Registro de Squid 3.x squid Lee el principio del archivo para determinar el formato.
Registro de monitorización de Redis redismonlog Lee el principio del archivo para determinar el formato.
Registro de Redis redislog Lee el principio del archivo para determinar el formato.
CSV csv Comprueba los siguientes delimitadores: coma (,), barra vertical (|), tabulación (\t), punto y coma (;) y Ctrl-A (\u0001). Ctrl-A es el carácter de control Unicode para Start Of Heading.
Amazon Redshift redshift Usa la conexión de JDBC para importar metadatos.
MySQL mysql Usa la conexión de JDBC para importar metadatos.
PostgreSQL postgresql Usa la conexión de JDBC para importar metadatos.
Base de datos de Oracle oracle Usa la conexión de JDBC para importar metadatos.
Microsoft SQL Server sqlserver Usa la conexión de JDBC para importar metadatos.
Amazon DynamoDB dynamodb Lee datos de la tabla de DynamoDB.

Los archivos en los siguientes formatos comprimidos se pueden clasificar:

  • ZIP (compatible con archivos que solo contengan un único archivo). Tenga en cuenta que Zip no es totalmente compatible en otros servicios (por el archivo).

  • BZIP

  • GZIP

  • LZ4

  • Snappy (compatible con los formatos Snappy estándar y nativo de Hadoop)

Clasificador de CSV integrado

El clasificador de CSV integrado analiza el contenido del archivo CSV para determinar el esquema de una tabla de AWS Glue. Este clasificador comprueba los siguientes delimitadores:

  • Coma (,)

  • Barra vertical (I)

  • Tabulador (\t)

  • Punto y coma (;)

  • Ctrl-A (\u0001)

    Ctrl-A es el carácter de control Unicode para Start Of Heading.

Para clasificarse como CSV, el esquema de tabla debe tener al menos dos columnas y dos filas de datos. El clasificador de CSV utiliza una serie de funciones heurísticas para determinar si un encabezado está en un determinado archivo. Si el clasificador no puede determinar un encabezado a partir de la primera fila de datos, los encabezados de columna se muestran como col1, col2, col3, etc. El clasificador de CSV determina si debe deducir un encabezado mediante la evaluación de las siguientes características del archivo:

  • Cada columna en un posible encabezado se analiza como un tipo de datos STRING.

  • Excepto en la última, cada columna en un posible encabezado incluye contenido de menos de 150 caracteres. Para permitir un delimitador final, la última columna puede estar vacía en el archivo.

  • Cada columna de un encabezado potencial debe cumplir los requisitos AWS Glue de regex correspondientes a un nombre de columna.

  • La fila de encabezado debe estar suficientemente diferenciada de las filas de datos. Para determinarlo, una o varias de las filas deben analizarse como un tipo distinto de STRING. Si todas las columnas son de tipo STRING, la primera fila de datos que no esté suficientemente diferenciada de las filas posteriores se usará como el encabezado.

nota

Si el clasificador de CSV integrado no crea la tabla de AWS Glue como desea, es posible que deba usar una de las siguientes alternativas:

  • Cambie los nombres de columnas en el Data Catalog, establezca SchemaChangePolicy en LOG y defina la configuración de salida de partición en InheritFromTable para las futuras ejecuciones de rastreador.

  • Cree un clasificador de grok para analizar los datos y asignar las columnas que desee.

  • El clasificador de CSV crea tablas haciendo referencia a LazySimpleSerDe como la biblioteca de serialización, lo que es una buena opción para la inferencia de tipo. Sin embargo, si los datos CSV contienen cadenas entre comillas, edite la definición de tabla y cambie la biblioteca SerDe a OpenCSVSerDe. Ajuste los tipos inferidos a STRING, establezca SchemaChangePolicy en LOG y defina la configuración de salida de partición en InheritFromTable para las futuras ejecuciones de rastreador. Para obtener más información acerca de las bibliotecas SerDe, consulte Referencia de SerDe en la Guía del usuario de Amazon Athena.