E/S gerenciada pelo Dataflow para o Apache Iceberg

A E/S gerenciada oferece suporte aos seguintes recursos do Apache Iceberg:

Catálogos
  • Hadoop
  • Hive
  • Catálogos baseados em REST
  • Metastore do BigQuery (requer o SDK do Apache Beam 2.62.0 ou mais recente se não estiver usando o Portable Runner)
Recursos de leitura Leitura em lote
Recursos de gravação

Para tabelas do BigQuery para o Apache Iceberg, use o BigQueryIO conector com a API BigQuery Storage. A tabela já precisa existir. A criação de tabelas dinâmicas não é compatível.

Requisitos

Os SDKs a seguir oferecem suporte à E/S gerenciada para o Apache Iceberg:

  • SDK do Apache Beam para Java versão 2.58.0 ou mais recente
  • SDK do Apache Beam para Python versão 2.61.0 ou mais recente

Configuração

A E/S gerenciada para o Apache Iceberg oferece suporte aos seguintes parâmetros de configuração:

Leitura ICEBERG

Configuração Tipo Descrição
table str Identificador da tabela do Iceberg.
catalog_name str O nome do catálogo que contém a tabela.
catalog_properties map[str, str] Propriedades usadas para configurar o catálogo do Iceberg.
config_properties map[str, str] Propriedades transmitidas para a configuração do Hadoop.
drop list[str] Um subconjunto de nomes de colunas a serem excluídos da leitura. Se for nulo ou vazio, todas as colunas serão lidas.
filter str Predicado semelhante a SQL para filtrar dados no momento da verificação. Exemplo: "id > 5 AND status = 'ACTIVE'". Usa a sintaxe do Apache Calcite: https://calcite.apache.org/docs/reference.html
keep list[str] Um subconjunto de nomes de colunas a serem lidos exclusivamente. Se for nulo ou vazio, todas as colunas serão lidas.

Gravação ICEBERG

').

Configuração Tipo Descrição
table str Um identificador de tabela totalmente qualificado. Você também pode fornecer um modelo para gravar em vários destinos dinâmicos, por exemplo: `dataset.my_{col1}_{col2.nested}_table`.
autosharding boolean Ativa o particionamento dinâmico para ajustar automaticamente o número de gravadores paralelos com base no volume de dados. Ele processa a distorção de dados subdividindo ainda mais as partições em vários fragmentos para evitar gargalos durante gravações de alta taxa de transferência. Disponível apenas com o modo de distribuição "hash".
catalog_name str O nome do catálogo que contém a tabela.
catalog_properties map[str, str] Propriedades usadas para configurar o catálogo do Iceberg.
config_properties map[str, str] Propriedades transmitidas para a configuração do Hadoop.
direct_write_byte_limit int32 Em um pipeline de streaming, define o limite para elevar pacotes para o caminho de gravação direta.
distribution_mode str Define a distribuição de dados de gravação. Distribuições compatíveis: - none: não embaralha as linhas (padrão) - hash: embaralha as linhas pela chave de partição antes de gravar os dados
drop list[str] Uma lista de nomes de campos a serem descartados do registro de entrada antes da gravação. É mutuamente exclusivo com "keep" e "only".
keep list[str] Uma lista de nomes de campos a serem mantidos no registro de entrada. Todos os outros campos são descartados antes da gravação. É mutuamente exclusivo com "drop" e "only".
only str O nome de um único campo de registro que deve ser gravado. É mutuamente exclusivo com "keep" e "drop".
partition_fields list[str] Campos usados para criar uma especificação de partição que é aplicada quando as tabelas são criadas. Para um campo "foo", as transformações de partição disponíveis são:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

Para mais informações sobre transformações de partição, acesse https://iceberg.apache.org/spec/#partition-transforms.

sort_fields list[str] Campos usados para definir a ordem de classificação da tabela, aplicada quando a tabela é criada. Cada entrada tem o formato <term> [asc|desc] [nulls first|nulls last], em que <term> é um nome de campo ou uma das transformações de partição (por exemplo, bucket(col, 4), day(ts)). A direção padrão é crescente; a ordem nula é nulos primeiro para crescente e nulos por último para decrescente. Observação: isso define a ordem de classificação declarada da tabela como metadados. Não faz com que o Beam classifique fisicamente os registros antes da gravação. Para mais informações sobre ordens de classificação, acesse https://iceberg.apache.org/spec/#sort-orders.
table_properties map[str, str] Propriedades da tabela do Iceberg que serão definidas nela quando ela for criada. Para mais informações sobre as propriedades da tabela, acesse https://iceberg.apache.org/docs/latest/configuration/#table-properties.
triggering_frequency_seconds int32 Para um pipeline de streaming, define a frequência com que os snapshots são produzidos.
write_properties map[str, str] Propriedades aplicadas ao gravador de arquivos subjacente (por exemplo, propriedades de gravação do Parquet, como "write.parquet.bloom-filter-enabled.column.

A seguir

Para mais informações e exemplos de código, consulte os seguintes tópicos: