La E/S administrada admite las siguientes funciones para Apache Iceberg:
| Catálogos |
|
|---|---|
| Funciones de lectura | Lectura por lotes |
| Funciones de escritura |
|
Para las tablas de BigQuery para Apache Iceberg,
usa el
BigQueryIO conector
con la API de BigQuery Storage. La tabla ya debe existir. No se admite la creación de tablas dinámicas.
Requisitos
Los siguientes SDKs 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:
Lectura ICEBERG
| Configuración | Tipo | Descripción |
|---|---|---|
| Tabla |
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 en el momento del 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 para leer de forma exclusiva. Si es nulo o está vacío, se leerán todas las columnas. |
Escritura ICEBERG
| Configuración | Tipo | Descripción |
|---|---|---|
| Tabla |
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 la fragmentación dinámica para ajustar automáticamente la cantidad de escritores paralelos según el volumen de datos. Maneja la asimetría de datos dividiendo 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 mezclar filas (predeterminado) - hash: mezclar filas por clave de partición antes de escribir 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". |
| único |
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:
Para obtener más información sobre las transformaciones de partición, visita https://iceberg.apache.org/spec/#partition-transforms. |
| sort_fields |
list[str]
|
Campos que se usan para establecer el orden de clasificación de la tabla, que se aplica cuando se crea la tabla. Cada entrada tiene el formato <term> [asc|desc] [nulls first|nulls last], donde <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 ascendente y nulos al final para 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 la escritura.
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. |
| write_properties |
map[str, str]
|
Propiedades aplicadas al escritor de archivos subyacente (p.ej., propiedades de escritura de Parquet como "write.parquet.bloom-filter-enabled.column. |
¿Qué sigue?
Para obtener más información y ejemplos de código, consulta los siguientes temas:
- Lee desde Apache Iceberg
- Lee desde Apache Iceberg (IU del compilador de trabajos)
- Escribe en Apache Iceberg