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 Runner v2)
Ler recursos Leitura em lote
Recursos de gravação

Para tabelas do BigQuery para Apache Iceberg, use o conector BigQueryIO com a API BigQuery Storage. A tabela já precisa existir. Não é possível criar tabelas dinamicamente.

Requisitos

Os seguintes SDKs são compatíveis com 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 Apache Iceberg é compatível com os seguintes parâmetros de configuração:

ICEBERG Lidos

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.
filtrar 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 para leitura exclusiva. Se for nulo ou vazio, todas as colunas serão lidas.

ICEBERG Gravação

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`.
fragmentação automática boolean Ativa o fragmentação dinâmica para ajustar automaticamente o número de gravadores paralelos com base no volume de dados. Ele processa o desvio 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 dos dados de gravação. Distribuições compatíveis: - nenhuma: não embaralha as linhas (padrão) - hash: embaralha as linhas por 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".
apenas 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 ela é 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 padrão é "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 de gravar. 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 propriedades de 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.

A seguir

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