Conexiones de Amazon S3 - AWS Glue

Conexiones de Amazon S3

Puede usar Glue AWS for Spark para leer y escribir archivos en Amazon S3. AWS Glue for Spark admite muchos formatos de datos habituales que se almacenan en Amazon S3 de forma inmediata, como CSV, Avro, JSON, Orc y Parquet. Para obtener más información acerca de los formatos de datos admitidos, consulte Opciones de formato de datos para las entradas y las salidas en AWS Glue para Spark. Cada formato de datos puede admitir diferentes características de Glue AWS. Consulte la página correspondiente a su formato de datos para conocer los detalles de la compatibilidad con las características. Además, puede leer y escribir archivos versionados almacenados en los marcos de lago de datos de Hudi, Iceberg y Delta Lake. Para obtener más información sobre los marcos de lago de datos, consulte Uso de marcos de lagos de datos con trabajos de ETL de AWS Glue.

Con Glue AWS, puede particionar sus objetos de Amazon S3 en una estructura de carpetas mientras escribe y, a continuación, recuperarlos mediante una partición para mejorar el rendimiento mediante una configuración sencilla. También puede establecer la configuración para agrupar archivos pequeños al transformar sus datos para mejorar el rendimiento. Puede leer, escribir bzip2 y archivar gzip en Amazon S3.

Configuración de las conexiones S3

Para conectarse a Amazon S3 en un trabajo de Glue with Spark AWS, necesitará algunos requisitos previos:

  • El trabajo de Glue AWS debe tener permisos de IAM para los buckets de Amazon S3 correspondientes.

En algunos casos, tendrá que configurar requisitos previos adicionales:

  • Al configurar el acceso entre cuentas, los controles de acceso adecuados en el bucket de Amazon S3.

  • Por motivos de seguridad, puede optar por enrutar sus solicitudes de Amazon S3 a través de una VPC de Amazon. Este enfoque puede conllevar problemas de ancho de banda y disponibilidad. Para obtener más información, consulte Puntos de enlace de Amazon VPC para Amazon S3.

Referencia de opción de conexión de Amazon S3

Designa una conexión a Amazon S3.

Dado que Amazon S3 administra archivos en lugar de tablas, además de especificar las propiedades de conexión que se proporcionan en este documento, tendrá que especificar una configuración adicional sobre su tipo de archivo. Puede especificar esta información mediante las opciones de formato de datos. Para obtener más información sobre las opciones de formato, consulte Opciones de formato de datos para las entradas y las salidas en AWS Glue para Spark. También puede especificar esta información integrándola con el catálogo de datos de Glue AWS.

Para ver un ejemplo de la distinción entre las opciones de conexión y las opciones de formato, considere la forma en que el método create_dynamic_frame_from_options toma connection_type, connection_options, format y format_options. En esta sección se analizan específicamente los parámetros proporcionados a connection_options.

Utilice las siguientes opciones de conexión con "connectionType": "s3":

  • "paths": (obligatorio) una lista de las rutas de Amazon S3 desde las que se va a leer.

  • "exclusions": (opcional) cadena que contiene una lista JSON de patrones glob de estilo Unix para excluir. Por ejemplo, "[\"**.pdf\"]" excluye todos los archivos PDF. Para obtener más información acerca de la sintaxis glob que admite AWS Glue, consulte Incluir y excluir patrones.

  • "compressionType": o "compression": (opcional) especifica la forma en que los datos se comprimen. Use "compressionType" para orígenes de Amazon S3 y "compression" para destinos de Amazon S3. Po lo general no es necesario si los datos tienen una extensión de archivo estándar. Los posibles valores son "gzip" y "bzip2"). Es posible que se admitan formatos de compresión adicionales para formatos específicos. Consulte la página correspondiente a su formato de datos para conocer los detalles de la compatibilidad con las características.

  • "groupFiles": (opcional) la agrupación de archivos se habilita de forma predeterminada cuando la entrada contiene más de 50 000 archivos. Para habilitar las agrupaciones con menos de 50 000 archivos, establezca este parámetro en "inPartition". Para deshabilitar las agrupaciones con más de 50 000 archivos, establezca este parámetro en "none".

  • "groupSize": (opcional) tamaño del grupo de destino en bytes. El valor predeterminado se calcula en función del tamaño de los datos de entrada y el tamaño de su clúster. Cuando hay menos de 50 000 archivos de entrada, "groupFiles" debe establecerse en "inPartition" para que este valor surta efecto.

  • "recurse": (opcional) si se establece en verdadero, lee recursivamente archivos en todos los subdirectorios de las rutas especificadas.

  • "maxBand": (opcional, avanzada) esta opción controla la duración en milisegundos después de la que es probable que el listado de s3 sea coherente. Se realiza un seguimiento de los archivos cuyas marcas de tiempo de modificación estén comprendidas en los últimos milisegundos de maxBand, en especial cuando se utilizan JobBookmarks para obtener coherencia eventual de Amazon S3. La mayoría de los usuarios no tienen que establecer esta opción. El valor predeterminado es 900 000 milisegundos, o 15 minutos.

  • "maxFilesInBand": (opcional, avanzada) esta opción especifica el número máximo de archivos que deben guardarse desde los últimos segundos de maxBand. Si se supera este número, los archivos adicionales se omiten y solo se procesarán en la siguiente ejecución del flujo de trabajo. La mayoría de los usuarios no tienen que establecer esta opción.

  • "isFailFast": (opcional) esta opción determina si un trabajo de ETL de AWS Glue arroja excepciones de análisis del lector. Si se establece en true, los trabajos fallan rápidamente si cuatro reintentos de la tarea Spark no pueden analizar los datos en forma correcta.

  • "catalogPartitionPredicate": (Opcional) Se usa para leer. El contenido de una cláusula SQL WHERE. Se utiliza al leer tablas del catálogo de datos con una gran cantidad de particiones. Recupera las particiones coincidentes de los índices del catálogo de datos. Se utiliza con push_down_predicate, una opción del método create_dynamic_frame_from_catalog (y otros métodos similares). Para obtener más información, consulte Filtrado del lado del servidor mediante predicados de partición de catálogo.

  • "partitionKeys": (Opcional) Se usa para escribir. Matriz de cadenas de etiquetas de columnas. AWS Glue particionará los datos según lo especificado en esta configuración. Para obtener más información, consulte Escritura de particiones.

  • "excludeStorageClasses": (Opcional) Se usa para leer. Matriz de cadenas que especifican las clases de almacenamiento de Amazon S3. AWS Glue excluirá los objetos de Amazon S3 en función de esta configuración. Para obtener más información, consulte Exclusión de clases de almacenamiento de Amazon S3.

Sintaxis de conexión obsoleta para los formatos de datos

Se puede acceder a determinados formatos de datos mediante una sintaxis de tipo de conexión específica. Esta sintaxis está obsoleta. Recomendamos que especifique los formatos mediante la utilización del tipo de conexión s3 y las opciones de formato que se proporcionan en Opciones de formato de datos para las entradas y las salidas en AWS Glue para Spark en su lugar.

"connectionType": "Orc"

Designa una conexión a archivos almacenados en Amazon S3 en formato de archivo Apache Hive Optimized Row Columnar (ORC).

Utilice las siguientes opciones de conexión con "connectionType": "orc":

  • paths: (obligatorio) una lista de las rutas de Amazon S3 desde las que se va a leer.

  • (Otros pares de nombre/valor de la opción): cualquier opción adicional, incluidas las opciones de formato, se pasa directamente a SparkSQL DataSource.

"connectionType": "parquet"

Designa una conexión a archivos almacenados en Amazon S3 con el formato de archivo Apache Parquet.

Utilice las siguientes opciones de conexión con "connectionType": "parquet":

  • paths: (obligatorio) una lista de las rutas de Amazon S3 desde las que se va a leer.

  • (Otros pares de nombre/valor de la opción): cualquier opción adicional, incluidas las opciones de formato, se pasa directamente a SparkSQL DataSource.