Personalización del comportamiento del rastreador - AWS Glue

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Personalización del comportamiento del rastreador

Cuando un rastreador se ejecuta, puede encontrar cambios en su almacén de datos que dan lugar a un esquema o una partición que es diferente de un rastreo anterior. Puede utilizar la AWS Management Console o la API de AWS Glue para configurar la manera en que su rastreador procesa determinados tipos de cambios.

Console

Al definir un rastreador mediante la consola de AWS Glue, dispone de varias opciones para configurar el comportamiento de su rastreador. Para obtener más información acerca de cómo usar la consola de AWS Glue para añadir un rastreador, consulte Configuración de rastreadores.

Cuando un rastreador se ejecuta en un almacén de datos rastreado anteriormente, puede resultar que un esquema haya cambiado o que se hayan eliminado objetos del almacén de datos. El rastreador registra los cambios de un esquema. En función del tipo de fuente del rastreador, las particiones y las tablas nuevas se podrían crear independientemente de la política de cambio de esquema.

Para especificar lo que hace el rastreador cuando detecta modificaciones en el esquema, puede elegir una de las siguientes acciones en la consola:

  • Actualizar la definición de la tabla en el Catálogo de datos: agregar columnas nuevas, eliminar las que faltan y modificar las definiciones de las columnas existentes en el AWS Glue Data Catalog. Eliminar los metadatos que no haya configurado el rastreador. Este es el valor predeterminado.

  • Agregar solo columnas nuevas: en el caso de las tablas que se mapean a un almacén de datos de Amazon S3, agrega columnas nuevas a medida que se detectan, pero no se quita ni cambia el tipo de las columnas existentes en el Catálogo de datos. Elija esta opción cuando las columnas actuales del Catálogo de datos sean correctas y no desea que el rastreador quite ni cambie el tipo de las columnas existentes. Si cambia un atributo de tabla de Amazon S3 fundamental, como clasificación, tipo de compresión o delimitador CSV, marque la tabla como obsoleta. Mantenga el formato de entrada y de salida, tal como se encuentra en el Catálogo de datos. Actualice los parámetros de SerDe únicamente si el parámetro es uno de los definidos por el rastreador. En los demás almacenes de datos, modifique las definiciones de columna existentes.

  • Ignorar el cambio y no actualizar la tabla en el Catálogo de datos: solo se crean tablas y particiones nuevas.

    Esta es la configuración predeterminada para rastreos progresivos.

Un rastreador también podría descubrir particiones nuevas o modificadas. De forma predeterminada, se añaden nuevas particiones y se actualizan particiones existentes si han cambiado. Además, puede establecer una opción de configuración del rastreador en Actualizar todas las particiones nuevas y existentes con metadatos de la tabla en la consola de AWS Glue. Al establecerse esta opción, las particiones heredan propiedades de metadatos, como su clasificación, formato de entrada, formato de salida, información de SerDe y esquema, de su tabla principal. Cualquier cambio en esas propiedades de una tabla se propaga por sus particiones. Cuando esta opción de configuración se establece en un rastreador existente, las particiones existentes se actualizan para que coincidan con las propiedades de su tabla principal la próxima vez que se ejecuta el rastreador.

Para especificar lo que hace el rastreador cuando encuentra un objeto eliminado en el almacén de datos, elija una de las siguientes acciones:

  • Eliminar tablas y particiones del Catálogo de datos

  • Ignorar el cambio y no actualizar la tabla en el Catálogo de datos

    Esta es la configuración predeterminada para rastreos progresivos.

  • Marcar la tabla como obsoleta en el Catálogo de datos: esta es la configuración predeterminada.

AWS CLI
aws glue create-crawler \ --name "your-crawler-name" \ --role "your-iam-role-arn" \ --database-name "your-database-name" \ --targets 'S3Targets=[{Path="s3://your-bucket-name/path-to-data"}]' \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": {"AddOrUpdateBehavior": "InheritFromTable"}, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
API

Al definir un rastreador mediante la API de AWS Glue, puede elegir entre varios campos para configurar el rastreador. SchemaChangePolicy en la API del rastreador determina qué hace este cuando descubre un esquema cambiado o un objeto eliminado. El rastreador registra cambios de esquema a medida que se ejecuta.

Ejemplo de un código de Python con las opciones de configuración de rastreador

import boto3 import json # Initialize a boto3 client for AWS Glue glue_client = boto3.client('glue', region_name='us-east-1') # Replace 'us-east-1' with your desired AWS region # Define the crawler configuration crawler_configuration = { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } configuration_json = json.dumps(crawler_configuration) # Create the crawler with the specified configuration response = glue_client.create_crawler( Name='your-crawler-name', # Replace with your desired crawler name Role='crawler-test-role', # Replace with the ARN of your IAM role for Glue DatabaseName='default', # Replace with your target Glue database name Targets={ 'S3Targets': [ { 'Path': "s3://your-bucket-name/path/", # Replace with your S3 path to the data }, ], # Include other target types like 'JdbcTargets' if needed }, Configuration=configuration_json, # Include other parameters like Schedule, Classifiers, TablePrefix, SchemaChangePolicy, etc., as needed ) print(response)a

Al ejecutarse un rastreador, siempre se crean nuevas tablas y particiones independientemente de la política de cambio de esquema. Puede elegir una de las acciones siguientes en el campo UpdateBehavior de la estructura SchemaChangePolicy para determinar lo que hace el rastreador cuando encuentra un esquema de tabla cambiado:

  • UPDATE_IN_DATABASE: actualizar la tabla en AWS Glue Data Catalog. Agregar columnas nuevas, eliminar las que faltan y modificar las definiciones de las columnas existentes. Eliminar los metadatos que no haya configurado el rastreador.

  • LOG: ignorar el cambio y no actualizar la tabla en el Catálogo de datos.

    Esta es la configuración predeterminada para rastreos progresivos.

También puede sustituir la estructura SchemaChangePolicy mediante un objeto JSON proporcionado en el campo Configuration de la API del rastreador. Este objeto JSON puede contener un par clave-valor para definir la política de modo que no actualice las columnas existentes y solo agregue las nuevas. Por ejemplo, proporcione el siguiente objeto JSON como una cadena:

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

Esta opción corresponde a la opción Agregar solo columnas nuevas en la consola de AWS Glue. Sustituye la estructura SchemaChangePolicy de las tablas que se derivan solo del rastreo de los almacenes de datos de Amazon S3. Seleccione esta opción si desea mantener los metadatos tal como están en el Catálogo de datos (el origen de confianza). Las columnas nuevas se agregan a medida que se encuentran, incluidos los tipos de datos anidados. Sin embargo, las columnas existentes no se eliminan y su tipo no cambia. Si un atributo de tabla de Amazon S3 cambia de forma significativa, la tabla se marca como obsoleta y se registra una advertencia de que un atributo incompatible se debe resolver. Esta opción no se aplica a los rastreadores incrementales.

Cuando un rastreador se ejecuta en un almacén de datos rastreado anteriormente, puede resultar que se detecten particiones nuevas o cambiadas. De forma predeterminada, se añaden nuevas particiones y se actualizan particiones existentes si han cambiado. Además, puede establecer una opción de configuración del rastreador en InheritFromTable (correspondiente a la opción Actualizar todas las particiones nuevas y existentes con metadatos de la tabla en la consola de AWS Glue). Al establecerse esta opción, las particiones heredan propiedades de metadatos de su tabla principal, como su clasificación, formato de entrada, formato de salida, información del SerDe y esquema. Cualquier cambio en las propiedades a la tabla principal se propaga por sus particiones.

Cuando esta opción de configuración se establece en un rastreador existente, las particiones existentes se actualizan para que coincidan con las propiedades de su tabla principal la próxima vez que se ejecuta el rastreador. Este comportamiento se establece en el campo Configuration de la API del rastreador. Por ejemplo, proporcione el siguiente objeto JSON como una cadena:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

El campo Configuration de la API del rastreador puede establecer varias opciones de configuración. Por ejemplo, para configurar la salida del rastreador tanto para particiones como para tablas, puede proporcionar una representación de cadena del siguiente objeto JSON:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

Puede elegir una de las acciones siguientes para determinar lo que hace el rastreador cuando encuentra un objeto eliminado en el almacén de datos. El campo DeleteBehavior de la estructura SchemaChangePolicy en la API del rastreador establece el comportamiento del rastreador cuando descubre un objeto eliminado.

  • DELETE_FROM_DATABASE: eliminar tablas y particiones del Catálogo de datos.

  • LOG: ignorar el cambio. No actualizar el Catálogo de datos. Escriba un mensaje de registro en su lugar.

  • DEPRECATE_IN_DATABASE: marcar la tabla como obsoleta en el Catálogo de datos. Este es el valor predeterminado.