Configuración del flujo de Firehose
Para crear un flujo de Firehose con las tablas de Apache Iceberg como destino, debe configurar lo siguiente.
nota
La configuración de un flujo de Firehose para la entrega a las tablas de los buckets de tablas de S3 es la misma que la de las tablas de Apache Iceberg de Amazon S3.
Configuración del origen y el destino
Para enviar datos a las tablas de Apache Iceberg, elija el origen del flujo.
Para configurar el origen del flujo, consulte Configurar los ajustes del origen.
A continuación, elija Tablas de Apache Iceberg como destino y proporcione un nombre de flujo de Firehose.
Configuración de transformación de datos
Para realizar transformaciones personalizadas en los datos, como añadir o modificar registros en el flujo entrante, puede añadir una función de Lambda al flujo de Firehose. Para obtener más información sobre la transformación de datos mediante Lambda en un flujo de Firehose, consulte Transformación de los datos de origen en Amazon Data Firehose.
En el caso de las tablas de Apache Iceberg, debe especificar cómo desea enrutar los registros entrantes a las distintas tablas de destino y las operaciones que desea realizar. Una de las formas de proporcionar la información de enrutamiento necesaria a Firehose es mediante una función de Lambda.
Para obtener más información, consulte Enrutar los registros a diferentes tablas de Iceberg.
Conectar catálogo de datos
Apache Iceberg requiere un catálogo de datos para escribir en las tablas de Apache Iceberg. Firehose se integra con AWS Glue Data Catalog para las tablas de Apache Iceberg.
Puede usar AWS Glue Data Catalog en la misma cuenta que el flujo de Firehose o en una cuenta cruzada y en la misma región que el flujo de Firehose (predeterminado), o en una región diferente.
Si realiza entregas a una tabla de Amazon S3 y utiliza la consola para configurar el flujo de Firehose, seleccione el catálogo que corresponda a su catálogo de la tabla de Amazon S3. Si está utilizando la CLI para configurar su flujo de Firehose, entonces en la entrada CatalogConfiguration, utilice CatalogARN con el formato: arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog/<s3
table bucket name>. Para obtener más información, consulte Configuración de un flujo de Firehose en las tablas de Amazon S3.
nota
Firehose admite tres operaciones para las tablas de Iceberg: insertar, actualizar y eliminar. Si no se especifica una operación, Firehose utilizará por defecto la operación insertar, donde agregará cada registro entrante como una nueva fila y conservará los duplicados. Para modificar los registros existentes, especifique la operación de “actualización”, que utiliza las claves principales para localizar y cambiar las filas existentes.
Ejemplo:
Por defecto (insertar): varios registros de clientes idénticos crean filas duplicadas.
Actualización especificada: la nueva dirección del cliente actualiza el registro existente.
Configuración de expresiones JQ
En el caso de las tablas de Apache Iceberg, debe especificar cómo desea enrutar los registros entrantes a las diferentes tablas de destino y las operaciones que desea realizar, como insertar, actualizar y eliminar. Puede hacerlo configurando expresiones JQ para que Firehose las analice y obtenga la información requerida. Para obtener más información, consulte Suministro de información de enrutamiento a Firehose con la expresión JSONQuery.
Configure claves únicas
Actualizaciones y eliminaciones con más de una tabla: las claves únicas son uno o más campos del registro de origen que identifican de forma exclusiva una fila en las tablas de Apache Iceberg. Si tiene un escenario de inserción único con más de una tabla, no tiene que configurar claves únicas. Si desea realizar actualizaciones y eliminaciones en determinadas tablas, debe configurar claves únicas para las tablas requeridas. Tenga en cuenta que la actualización insertará automáticamente la fila si falta en las tablas. Si solo tiene una tabla, puede configurar claves únicas. En una operación de actualización, Firehose genera un archivo de eliminación seguido de una inserción.
Puede configurar claves únicas por tabla como parte de la creación de flujos de Firehose o puede configurar los identifier-field-idsidentifier-field-ids si hay tablas obligatorias y las usará como claves únicas. Si ninguna está configurada, se produce un error en la entrega de los datos con las operaciones de actualización y eliminación.
Para configurar esta sección, proporcione el nombre de la base de datos, el nombre de la tabla y las claves únicas de las tablas en las que desee actualizar o eliminar datos. Solo puede tener una entrada para cada tabla de la configuración. No es necesario configurar esta sección para los escenarios de solo anexado. Si lo desea, también puede optar por proporcionar un prefijo de bucket de errores si los datos de la tabla no se entregan, como se muestra en el siguiente ejemplo.
[ { "DestinationDatabaseName": "MySampleDatabase", "DestinationTableName": "MySampleTable", "UniqueKeys": [ "COLUMN_PLACEHOLDER" ], "S3ErrorOutputPrefix": "OPTIONAL_PREFIX_PLACEHOLDER" } ]
Firehose permite configurar claves únicas si el nombre de columna especificado es único en toda la tabla. Sin embargo, no permite los nombres de columnas totalmente cualificados como claves únicas. Por ejemplo, una clave denominada top._id no se considera una clave única si el nombre de la columna _id también se encuentra en el nivel superior. Si _id es exclusivo en toda la tabla, se utiliza independiente de su ubicación dentro de la estructura de la tabla. Esto determina si es una columna de nivel superior o una columna anidada. En el siguiente ejemplo, _id es una clave única válida para el esquema, ya que el nombre de la columna es exclusivo en todo el esquema.
[ "schema": { "type": "struct", "fields": [ { "name": "top", "type": { "type": "struct", "fields": [ { "name": "_id", "type": "string" }, { "name": "name", "type": "string" } ] } }, { "name": "user", "type": "string" } ] } ]
En el siguiente ejemplo, _id no es una clave única válida para el esquema porque se utiliza en la columna de nivel superior y en la estructura anidada.
[ "schema": { "type": "struct", "fields": [ { "name": "top", "type": { "type": "struct", "fields": [ { "name": "_id", "type": "string" }, { "name": "name", "type": "string" } ] } }, { "name": "_id", "type": "string" } ] } ]
Especificación de duración de reintento
Puede usar esta configuración para especificar el tiempo en segundos durante el que Firehose debe volver a intentarlo si encuentra errores al escribir en las tablas de Apache Iceberg en Amazon S3. Puede establecer cualquier valor entre 0 y 7200 segundos para realizar los reintentos. De forma predeterminada, Firehose vuelve a intentarlo durante 300 segundos.
Gestión de la entrega o el procesamiento fallidos
Debe configurar Firehose para que entregue los registros a un bucket de copias de seguridad de S3 en caso de que se produzcan errores en el procesamiento o la entrega de un flujo una vez transcurrido el periodo de reintento. Para ello, configure el bucket de copias de seguridad de S3 y el prefijo de salida de error del bucket de copias de seguridad de S3 desde la Configuración de copias de seguridad de la consola.
Gestionar errores
Firehose envía todos los errores de entrega a los buckets de errores de CloudWatch Logs y Amazon S3.
Lista de errores:
|
Mensaje de error |
Descripción |
|---|---|
|
|
Firehose le escribe a una tabla que no existe, o la tabla no está en formato V2. Firehose no admite tablas en formato V1. |
|
|
Se pasó un nombre vacío o nulo en la tabla, o la tabla no está en formato V2. Firehose no admite tablas en formato V1. |
|
|
Asegúrese de que el rol de IAM creado en el paso de requisitos previos tenga los permisos y la política de confianza necesarios. |
|
|
Asegúrese de que el rol de IAM creado en el paso de requisitos previos tenga los permisos y la política de confianza necesarios. |
Configuración de sugerencias de búfer
Firehose almacena en búfer una cantidad determinada de datos de streaming de entrada (Tamaño del almacenamiento en búfer) y durante un periodo determinado (Intervalo de almacenamiento en búfer) antes de entregarlos en las tablas de Apache Iceberg. Puede elegir un tamaño de búfer de entre 1 y 128 MiBs y un intervalo de búfer de entre 0 y 900 segundos. Un mayor número de sugerencias de búfer se traduce en un menor número de escrituras en S3, un menor costo de compactación debido a que los archivos de datos son más grandes y un tiempo de ejecución de consultas más rápido, pero con una latencia más alta. Los valores de sugerencia de búfer más bajos proporcionan los datos con una latencia más baja.
Configuración de opciones avanzadas
Puede configurar el cifrado del lado del servidor, el registro de errores, los permisos y las etiquetas para sus tablas de Apache Iceberg. Para obtener más información, consulte Configuración de opciones avanzadas. Debe agregar el rol de IAM que creó como parte del Requisitos previos para utilizar las tablas de Apache Iceberg como destino. Firehose lo asumirá para acceder a las tablas de AWS Glue y escribir en los buckets de Amazon S3.
La creación del flujo de Firehose puede tardar varios minutos en completarse. Después de crear correctamente el flujo de Firehose, puede empezar a ingerir datos en este y verlos en las tablas de Apache Iceberg.