E/S administrada de Dataflow para Apache Iceberg

La E/S administrada admite las siguientes capacidades para Apache Iceberg:

Catálogos
  • Hadoop
  • Hive
  • Catálogos basados en REST
  • Metastore de BigQuery (requiere el SDK de Apache Beam 2.62.0 o posterior si no se usa Runner v2)
Capacidades de lectura Lectura por lotes
Capacidades de escritura

Para las tablas de BigQuery para Apache Iceberg, usa el conector BigQueryIO con la API de BigQuery Storage. La tabla ya debe existir; no se admite la creación dinámica de tablas.

Requisitos

Los siguientes SDK admiten la E/S administrada para Apache Iceberg:

  • SDK de Apache Beam para Java, versión 2.58.0 o posterior
  • SDK de Apache Beam para Python, versión 2.61.0 o posterior

Configuración

La E/S administrada para Apache Iceberg admite los siguientes parámetros de configuración:

ICEBERG Leer

Configuración Tipo Descripción
table str Es el identificador de la tabla de Iceberg.
catalog_name str Nombre del catálogo que contiene la tabla.
catalog_properties map[str, str] Propiedades que se usan para configurar el catálogo de Iceberg.
config_properties map[str, str] Propiedades que se pasan a la configuración de Hadoop.
drop list[str] Es un subconjunto de nombres de columnas que se excluirán de la lectura. Si es nulo o está vacío, se leerán todas las columnas.
filtrar str Es un predicado similar a SQL para filtrar datos durante el análisis. Ejemplo: "id > 5 AND status = 'ACTIVE'". Usa la sintaxis de Apache Calcite: https://calcite.apache.org/docs/reference.html
keep list[str] Es un subconjunto de nombres de columnas que se leerán de forma exclusiva. Si es nulo o está vacío, se leerán todas las columnas.

ICEBERG Escribir

Configuración Tipo Descripción
table str Un identificador de tabla completamente calificado. También puedes proporcionar una plantilla para escribir en varios destinos dinámicos, por ejemplo: `dataset.my_{col1}_{col2.nested}_table`.
Autosharding boolean Habilita el fragmentado dinámico para ajustar automáticamente la cantidad de escritores paralelos según el volumen de datos. Maneja la asimetría de los datos subdividiendo aún más las particiones en varios fragmentos para evitar cuellos de botella durante las escrituras de alto rendimiento. Solo está disponible con el modo de distribución "hash".
catalog_name str Nombre del catálogo que contiene la tabla.
catalog_properties map[str, str] Propiedades que se usan para configurar el catálogo de Iceberg.
config_properties map[str, str] Propiedades que se pasan a la configuración de Hadoop.
direct_write_byte_limit int32 Para una canalización de transmisión, establece el límite para pasar los paquetes a la ruta de escritura directa.
distribution_mode str Define la distribución de los datos de escritura. Distribuciones admitidas: - none: No se mezclan las filas (opción predeterminada) - hash: Se mezclan las filas por clave de partición antes de escribir los datos
drop list[str] Es una lista de nombres de campos que se deben descartar del registro de entrada antes de la escritura. Es mutuamente excluyente con "keep" y "only".
keep list[str] Es una lista de nombres de campos que se conservarán en el registro de entrada. Se descartan todos los demás campos antes de la escritura. Es mutuamente excluyente con "drop" y "only".
solo str Es el nombre de un solo campo de registro que se debe escribir. Es mutuamente excluyente con "keep" y "drop".
partition_fields list[str] Son los campos que se usan para crear una especificación de partición que se aplica cuando se crean las tablas. Para un campo "foo", las transformaciones de partición disponibles son las siguientes:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

Para obtener más información sobre las transformaciones de partición, visita https://iceberg.apache.org/spec/#partition-transforms.

sort_fields list[str] Son los campos que se usan para establecer el orden de clasificación de la tabla y que se aplican cuando se crea la tabla. Cada entrada tiene la forma <term> [asc|desc] [nulls first|nulls last], en la que <term> es un nombre de campo o una de las transformaciones de partición (p.ej., bucket(col, 4), day(ts)). La dirección predeterminada es ascendente; el orden nulo predeterminado es nulos primero para el orden ascendente y nulos al final para el orden descendente. Nota: Esto establece el orden de clasificación declarado de la tabla como metadatos; no hace que Beam ordene físicamente los registros antes de escribir. Para obtener más información sobre los órdenes de clasificación, visita https://iceberg.apache.org/spec/#sort-orders.
table_properties map[str, str] Propiedades de la tabla de Iceberg que se establecerán en la tabla cuando se cree. Para obtener más información sobre las propiedades de la tabla, visita https://iceberg.apache.org/docs/latest/configuration/#table-properties.
triggering_frequency_seconds int32 Para una canalización de transmisión, establece la frecuencia con la que se producen las instantáneas.

¿Qué sigue?

Para obtener más información y ejemplos de código, consulta los siguientes temas: