Conector de Google Cloud Storage para Amazon Athena - Amazon Athena

Conector de Google Cloud Storage para Amazon Athena

El conector de Google Cloud Storage para Amazon Athena permite que Amazon Athena ejecute consultas en archivos Parquet y CSV almacenados en un bucket de Google Cloud Storage (GCS). Después de agrupar uno o varios archivos Parquet o CSV en una carpeta particionada o no participada de un bucket de GCS, puede organizarlos en una tabla de base de datos de AWS Glue.

Este conector no se puede registrar en el Catálogo de datos de Glue como catálogo federado. Este conector no es compatible con los controles de acceso a datos definidos en Lake Formation a nivel de catálogo, base de datos, tabla, columna, fila y etiqueta. Este conector utiliza Conexiones de Glue para centralizar las propiedades de configuración en Glue.

Si Lake Formation está habilitado en la cuenta, el rol de IAM del conector de Lambda federado de Athena que haya implementado en AWS Serverless Application Repository debe tener acceso de lectura en Lake Formation para AWS Glue Data Catalog.

Para consultar un artículo en el que se indica cómo utilizar Athena para ejecutar consultas en archivos Parquet o CSV en un bucket de GCS, consulte la publicación en el blog de Big Data de AWS Utilizar Amazon Athena para consultar datos almacenados en Google Cloud Platform.

Requisitos previos

Limitaciones

  • Las operaciones de escritura de DDL no son compatibles.

  • Cualquier límite de Lambda relevante. Para obtener más información, consulte Cuotas de Lambda en la Guía para desarrolladores de AWS Lambda.

  • Actualmente, el conector solo admite el tipo VARCHAR para columnas de partición (string o varchar en un esquema de tabla de AWS Glue). Otros tipos de campos de partición generan errores cuando se los consulta en Athena.

Términos

Los siguientes términos tienen relación con el conector de GCS.

  • Controlador: controlador de Lambda que accede al bucket de GCS. Un controlador puede ser para los metadatos o para los registros de datos.

  • Controlador de metadatos: controlador de Lambda que recupera metadatos del bucket de GCS.

  • Controlador de registros: controlador de Lambda que recupera registros de datos del bucket de GCS.

  • Controlador compuesto: controlador de Lambda que recupera tanto metadatos como registros de datos del bucket de GCS.

Tipos de archivo admitidos

El conector GCS admite los tipos de archivo Parquet y CSV.

nota

Asegúrese de no colocar tanto archivos CSV como Parquet en el mismo bucket o ruta de GCS. Si lo hace, se puede producir un error de tiempo de ejecución cuando se intenten leer archivos Parquet como CSV o viceversa.

Parámetros

Utilice los parámetros de esta sección para configurar el conector GCS.

nota

Los conectores de orígenes de datos de Athena creados a partir del 3 de diciembre de 2024 utilizan conexiones de AWS Glue.

Los nombres y definiciones de los parámetros que se indican a continuación corresponden a conectores de orígenes de datos de Athena creados antes del 3 de diciembre de 2024. Estos pueden variar respecto a las propiedades de conexión de AWS Glue correspondientes. A partir del 3 de diciembre de 2024, utilice los parámetros que se indican a continuación únicamente al implementar manualmente una versión anterior de un conector de origen de datos de Athena.

  • spill_bucket: especifica el bucket de Amazon S3 para los datos que superen los límites de la función de Lambda.

  • spill_prefix: (opcional) de forma predeterminada, se establece una subcarpeta en la carpeta especificada spill_bucket llamada athena-federation-spill. Le recomendamos configurar un ciclo de vida de almacenamiento de Amazon S3 en esta ubicación para eliminar vertidos de más de un número predeterminado de días u horas.

  • spill_put_request_headers: (opcional) un mapa codificado en JSON de encabezados y valores de solicitudes para la solicitud putObject de Amazon S3 que se usa para el vertidos (por ejemplo, {"x-amz-server-side-encryption" : "AES256"}). Para ver otros encabezados posibles, consulte PutObject en la referencia de la API de Amazon Simple Storage Service.

  • kms_key_id: (opcional) de forma predeterminada, los datos que se vierten a Amazon S3 se cifran mediante el modo de cifrado autenticado AES-GCM y una clave generada aleatoriamente. Para que la función de Lambda use claves de cifrado más seguras generadas por KMS, como a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, puede especificar un ID de clave de KMS.

  • disable_spill_encryption: (opcional) cuando se establece en True, desactiva el cifrado del vertido. El valor predeterminado es False, de modo que los datos que se vierten a S3 se cifran mediante AES-GCM, ya sea mediante una clave generada aleatoriamente o KMS para generar claves. La desactivación del cifrado de vertido puede mejorar el rendimiento, especialmente si su ubicación de vertido usa cifrado del servidor.

  • secret_manager_gcp_creds_name: nombre del secreto de AWS Secrets Manager que contiene las credenciales de GCS en formato JSON (por ejemplo, GoogleCloudPlatformCredentials).

Configuración de bases de datos y tablas en AWS Glue

Dado que la capacidad de inferencia de esquemas integrada del conector de GCS es limitada, se recomienda utilizar AWS Glue para los metadatos. En los siguientes procedimientos se muestra cómo crear una base de datos y una tabla en AWS Glue a las que se puede acceder desde Athena.

Creación de una base de datos en AWS Glue

Puede utilizar la consola de AWS Glue para crear una base de datos y utilizarla con el conector de GCS.

Para crear una base de datos en AWS Glue
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS Glue en https://console.aws.amazon.com/glue/.

  2. Seleccione Databases (Bases de datos) en el panel de navegación.

  3. Elija Agregar una base de datos.

  4. En Name (Nombre), ingrese un nombre para la base de datos que desee utilizar con el conector de GCS.

  5. En Ubicación, especifique google-cloud-storage-flag. Esta ubicación informa al conector GCS que la base de datos de AWS Glue contiene tablas para los datos de GCS que se consultarán en Athena. El conector reconoce las bases de datos de Athena que tienen esta marca e ignora aquellas que no la tienen.

  6. Elija Create database (Creación de base de datos).

Creación de una tabla en AWS Glue

Ahora puede crear una tabla para la base de datos. Cuando se crea una tabla de AWS Glue para utilizarla con el conector de GCS, se deben especificar metadatos adicionales.

Para crear una tabla en la consola de AWS Glue
  1. En la consola de AWS Glue, seleccione Tables (Tablas) en el panel de navegación.

  2. En la página Tables (Tablas), seleccione Add table (Agregar tabla).

  3. En la página Set table properties (Establecer propiedades de la tabla), ingrese la siguiente información:

    • Name (Nombre): nombre exclusivo para la tabla.

    • Database (Base de datos): seleccione la base de datos de AWS Glue que haya creado para el conector de GCS.

    • Include path (Incluir ruta): en la sección Data store (Almacén de datos), en Include path (Incluir ruta), ingrese la ubicación URI de GCS con el prefijo gs:// (por ejemplo,gs://gcs_table/data/). Si tiene una o varias carpetas de particiones, no las incluya en la ruta.

      nota

      Cuando se introduce la ruta de tabla no s3://, la consola de AWS Glue muestra un error. Puede omitir este error. La tabla se creará correctamente.

    • Data format (Formato de datos): en Classification (Clasificación), seleccione CSV o Parquet.

  4. Seleccione Siguiente.

  5. En la página Choose or define schema (Seleccionar o definir esquema), se recomienda encarecidamente definir un esquema de tabla, aunque no es obligatorio. Si no se define un esquema, el conector de GCS intentará inferirlo automáticamente.

    Realice una de las siguientes acciones:

    • Si desea que el conector de GCS intente inferir un esquema automáticamente, seleccione Next (Siguiente), y luego Create (Crear).

    • Para definir un esquema por sí mismo, ejecute los pasos de la siguiente sección.

Definición de un esquema de tabla en AWS Glue

Definir un esquema de tabla en AWS Glue requiere más pasos, pero ofrece un mayor control sobre el proceso de creación de tablas.

Para definir un esquema para una tabla en AWS Glue
  1. En la página Choose or define schema (Seleccionar o definir esquema), seleccione Add (Agregar).

  2. Utilice el cuadro de diálogo Add schema entry (Agregar entrada de esquema) para proporcionar un nombre de columna y un tipo de datos.

  3. Para designar la columna como columna de partición, seleccione la opción Set as partition key (Establecer como clave de partición).

  4. Seleccione Save (Guardar) para guardar la columna.

  5. Seleccione Add (Agregar) para agregar otra columna.

  6. Cuando haya terminado de agregar columnas, seleccione Next (Siguiente).

  7. En la página Review and créate (Revisar y crear), revise la tabla y, a continuación, seleccione Create (Crear).

  8. Si el esquema contiene información sobre particiones, ejecute los pasos de la siguiente sección para agregar un patrón de partición a las propiedades de la tabla en AWS Glue.

Adición de un patrón de partición a propiedades de tabla en AWS Glue

Si los buckets de GCS tienen particiones, se debe agregar el patrón de partición a las propiedades de la tabla en AWS Glue.

Para agregar información de partición a propiedades de tabla en AWS Glue
  1. En la página de detalles de la tabla que haya creado en AWS Glue, seleccione Actions (Acciones), Edit table (Editar tabla).

  2. En la página Edit table (Editar tabla), desplácese hacia abajo hasta la sección Table properties (Propiedades de la tabla).

  3. Seleccione Add (Agregar) para agregar una clave de partición.

  4. En Clave, escriba partition.pattern. Esta clave define el patrón de ruta de la carpeta.

  5. En Value (Valor), introduzca un patrón de ruta de carpeta como StateName=${statename}/ZipCode=${zipcode}/, por ejemplo, donde statename y zipcode, que van dentro de ${}, son nombres de columnas de partición. El conector de GCS admite esquemas de partición Hive y no Hive.

  6. Cuando termine de actualizar las etiquetas, elija Guardar.

  7. Para ver las propiedades de tabla que acaba de crear, seleccione la pestaña Advanced properties (Propiedades avanzadas).

En este punto, puede navegar hasta la consola de Athena. La base de datos y la tabla que haya creado en AWS Glue están disponibles para realizar consultas en Athena.

Compatibilidad con tipos de datos

En las siguientes tablas se muestran los tipos de datos admitidos para CSV y Parquet.

CSV

Naturaleza de los datos Tipo de datos inferidos
Los datos parecen un número BIGINT
Los datos parecen una cadena VARCHAR
Los datos parecen de punto flotante (flotantes, dobles o decimales) DOBLE
Los datos parecen una fecha Timestamp
Datos que contienen valores verdadero/falso BOOL

Parquet

PARQUET Athena (Arrow)
BINARIO VARCHAR
BOOLEAN BOOL
DOBLE DOBLE
ENUM VARCHAR
FIXED_LEN_BYTE_ARRAY DECIMAL
FLOAT FLOAT (32 bits)
INT32
  1. INT32

  2. DATEDAY (cuando el tipo lógico de la columna de Parquet es DATE)

INT64
  1. INT64

  2. TIMESTAMP (cuando el tipo lógico de la columna de Parquet es TIMESTAMP)

INT96 Timestamp
MAP MAP
STRUCT STRUCT
LIST LIST

Permisos necesarios

Para obtener información completa sobre las políticas de IAM que requiere este conector, consulte la sección Policies del archivo athena-gcs.yaml. En la siguiente lista se resumen los permisos requeridos.

  • Acceso de escritura a Amazon S3: el conector requiere acceso de escritura a una ubicación de Amazon S3 para volcar los resultados de consultas de gran tamaño.

  • Athena GetQueryExecution: el conector usa este permiso para fallar rápidamente cuando finaliza la consulta ascendente de Athena.

  • AWS Glue Data Catalog: el conector de GCS requiere acceso de solo lectura a AWS Glue Data Catalog para obtener información sobre un esquema.

  • Registros de CloudWatch: el conector requiere acceso a Registros de CloudWatch para almacenar registros.

Rendimiento

Cuando el esquema de la tabla contiene campos de partición y la propiedad de tabla partition.pattern está configurada correctamente, se puede incluir el campo de partición en la cláusula WHERE de las consultas. En esas consultas, el conector de GCS utiliza las columnas de partición para ajustar la ruta de la carpeta de GCS y evitar analizar archivos innecesarios en las carpetas de GCS.

En el caso de los conjuntos de datos Parquet, seleccionar un subconjunto de columnas da como resultado que se analicen menos datos. Esto suele traducirse en un menor tiempo de ejecución de consultas cuando se aplica la proyección de columnas.

En el caso de los conjuntos de datos CSV, no se admite la proyección de columnas y no se reduce la cantidad de datos que se analizan.

Las cláusulas LIMIT reducen la cantidad de datos analizados; sin embargo, si no se proporciona un predicado, es probable que las consultas SELECT con una cláusula LIMIT analicen al menos 16 MB de datos. El conector de GCS analiza más datos para los conjuntos de datos de mayor tamaño que para los conjuntos de datos más pequeños, independientemente de la cláusula LIMIT aplicada. Por ejemplo, la consulta SELECT * LIMIT 10000 analiza más datos para un conjunto de datos subyacente de mayor tamaño que para uno más pequeño.

Información sobre licencias

Al usar este conector, reconoce la inclusión de componentes de terceros, cuya lista se puede encontrar en el archivo pom.xml para este conector y acepta los términos de las licencias de terceros correspondientes que se proporcionan en el archivo LICENSE.txt de GitHub.com.

Recursos adicionales

Para obtener más información acerca de este conector, consulte el sitio correspondiente en GitHub.com.