FileMatch - AWS Glue

FileMatch

La regla FileMatch le permite comparar archivos con otros archivos o sumas de comprobación. Esto puede ser útil en algunas situaciones:

  1. Validación de archivos recibidos de fuentes externas: puede usar FileMatch para asegurarse de que haya recibido los archivos correctos de orígenes externos mediante su comparación con sumas de comprobación. Esto ayuda a validar la integridad de los datos que está ingiriendo.

  2. Comparación de datos en dos carpetas diferentes: FileMatch se puede utilizar para comparar archivos entre dos carpetas.

Esta regla recopila una métrica: el número de archivos que ha analizado la regla.

{"Dataset.*.FileCount":1}

Validación de un archivo con una suma de comprobación:

FileMatch acepta un archivo y un conjunto de sumas de comprobación para garantizar que al menos una suma de comprobación coincida con el archivo.

FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "MD5" FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-1" FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-256" FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac041793154713e5ef8f319"]

Los siguientes algoritmos estándar son compatibles:

  • MD5

  • SHA-1

  • SHA-256

Si no proporciona ningún algoritmo, el valor predeterminado es SHA-256.

Validación de todos los archivos de una carpeta con el conjunto de sumas de comprobación:

FileMatch "s3://amzn-s3-demo-bucket /" in ["3ee0d8617ac041793154713e5ef8f319", "7e8617ac041793154713e5ef8f319"] with hashAlgorithm = "MD5" FileMatch "s3://amzn-s3-demo-bucket /internal-folder/" in ["3ee0d8617ac041793154713e5ef8f319", "7e8617ac041793154713e5ef8f319"]

Comparación de archivos en diferentes carpetas

# Compare all files across two buckets FileMatch "s3://original_bucket/" "s3://archive_bucket/" # Compare files within specific subfolders FileMatch "s3://original_bucket/internal-folder/" "s3://original_bucket/other-folder/" # Compare only .json files across two folders FileMatch "s3://original_bucket/" "s3://archive_bucket/" with uriRegex = "\.json$" # Compare only the 5 most recent .csv files FileMatch "s3://original_bucket/" "s3://archive_bucket/" with recentFiles = 5 with uriRegex = "\.csv$" with filterOrder = ["uriRegex","recentFiles"]

FileMatch comprobará el contenido de los archivos en original_bucket y se asegurará de que coincidan con lo que contiene archive_bucket. La regla fallará si no coinciden exactamente. También puede comprobar el contenido de las carpetas internas o de los archivos individuales.

FileMatch también puede comparar archivos individuales entre sí.

FileMatch "s3://amzn-s3-demo-bucket /file_old.json" "s3://amzn-s3-demo-bucket /file_new.json"

Cómo inferir los nombres de los archivos directamente de los marcos de datos

No siempre tiene que proporcionar una ruta de archivo. Por ejemplo, al crear la regla en el Catálogo de datos de AWS Glue (respaldado por Amazon S3), puede resultar difícil encontrar qué carpetas usan las tablas del catálogo. AWS Calidad de datos de Glue puede encontrar las carpetas o archivos específicos que se usan para rellenar su marco de datos.

nota

Esta característica solo funcionará cuando los archivos se lean correctamente en DynamicFrame o DataFrame.

FileMatch in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "MD5" FileMatch in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-1" FileMatch in ["3ee0d8617ac041793154713e5ef8f319"] with hashAlgorithm = "SHA-256" FileMatch in ["3ee0d8617ac041793154713e5ef8f319"]

Si la suma de comprobación proporcionada es diferente de la calculada, FileMatch le avisará de la diferencia.

La instantánea muestra una regla con el estado Regla fallida de Calidad de datos. FileMatch explica el error.

Etiquetas de reglas opcionales basadas en archivos:

Las etiquetas permiten controlar el comportamiento de las reglas.

recentFiles

Esta etiqueta limita el número de archivos procesados dejando primero el archivo más reciente.

FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with recentFiles = 1

uriRegex

nota

La etiqueta AWS está disponible en uriRegex Glue 5.0 y versiones posteriores.

Esta etiqueta filtra los archivos mediante la aplicación de un patrón de expresión regular a la ruta del archivo. Solo se procesan los archivos cuyas rutas coinciden con el patrón. También puede usar una anticipación negativa para excluir los archivos que coinciden con un patrón.

# Match only files with a .json extension FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with uriRegex = "\.json$" # Exclude files ending in .tmp using a negative lookahead FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with uriRegex = "(?!.*\.tmp$).*"

filterOrder

nota

La etiqueta AWS está disponible en filterOrder Glue 5.0 y versiones posteriores.

Cuando utiliza varias etiquetas de filtro, como recentFiles y uriRegex, en conjunto, la etiqueta filterOrder controla el orden en que se aplican. El orden predeterminado es primero recentFiles y luego uriRegex.

FileMatch "s3://bucket/" in ["3ee0d8617ac04179sam4713e5ef8f319"] with recentFiles = 1 with uriRegex = "\.json$" with filterOrder = ["uriRegex","recentFiles"]

matchFileName

Esta etiqueta garantiza que los archivos no tengan nombres duplicados. El comportamiento predeterminado es false.

FileMatch "s3://amzn-s3-demo-bucket/file.json" in ["3ee0d8617ac04179sam4713e5ef8f319"] with matchFileName = "true"

Existen algunas consideraciones:

  1. En la ETL de AWS Glue, debe tener la transformación EvaluateDataQuality inmediatamente después de una transformación de Amazon S3 o del Catálogo de datos de AWS Glue.

    La instantánea muestra una regla con el estado Regla fallida de Calidad de datos. FileMatch explica el error.
  2. Esta regla no funcionará en las sesiones interactivas de AWS Glue.