I/O gestiti da Dataflow per Apache Iceberg

Managed I/O supporta le seguenti funzionalità per Apache Iceberg:

Cataloghi
  • Hadoop
  • Hive
  • Cataloghi basati su REST
  • Metastore BigQuery (richiede Apache Beam SDK 2.62.0 o versioni successive se non utilizzi Runner v2)
Funzionalità di lettura Lettura batch
Capacità di scrittura

Per le tabelle BigQuery per Apache Iceberg, utilizza il connettore BigQueryIO con l'API BigQuery Storage. La tabella deve già esistere; la creazione dinamica della tabella non è supportata.

Requisiti

I seguenti SDK supportano I/O gestito per Apache Iceberg:

  • Apache Beam SDK per Java versione 2.58.0 o successive
  • SDK Apache Beam per Python versione 2.61.0 o successive

Configurazione

Managed I/O per Apache Iceberg supporta i seguenti parametri di configurazione:

ICEBERG Leggi

Configurazione Tipo Descrizione
table str Identificatore della tabella Iceberg.
catalog_name str Nome del catalogo contenente la tabella.
catalog_properties map[str, str] Proprietà utilizzate per configurare il catalogo Iceberg.
config_properties map[str, str] Proprietà passate alla configurazione Hadoop.
drop list[str] Un sottoinsieme di nomi di colonne da escludere dalla lettura. Se è nullo o vuoto, verranno lette tutte le colonne.
filtro str Predicato simile a SQL per filtrare i dati al momento della scansione. Esempio: "id > 5 AND status = 'ACTIVE'". Utilizza la sintassi di Apache Calcite: https://calcite.apache.org/docs/reference.html
keep list[str] Un sottoinsieme di nomi di colonna da leggere esclusivamente. Se è nullo o vuoto, verranno lette tutte le colonne.

ICEBERG Scrittura

Configurazione Tipo Descrizione
table str Un identificatore di tabella completo. Puoi anche fornire un modello per scrivere in più destinazioni dinamiche, ad esempio: `dataset.my_{col1}_{col2.nested}_table`.
autosharding boolean Consente il partizionamento dinamico per regolare automaticamente il numero di writer paralleli in base al volume di dati. Gestisce la distorsione dei dati suddividendo ulteriormente le partizioni in più shard per evitare colli di bottiglia durante le scritture a velocità effettiva elevata. Disponibile solo con la modalità di distribuzione "hash".
catalog_name str Nome del catalogo contenente la tabella.
catalog_properties map[str, str] Proprietà utilizzate per configurare il catalogo Iceberg.
config_properties map[str, str] Proprietà passate alla configurazione Hadoop.
direct_write_byte_limit int32 Per una pipeline di flussi di dati, imposta il limite per il lift dei bundle nel percorso di scrittura diretta.
distribution_mode str Definisce la distribuzione dei dati di scrittura. Distribuzioni supportate: - Nessuna: non rimescola le righe (impostazione predefinita) - Hash: rimescola le righe in base alla chiave di partizione prima di scrivere i dati
drop list[str] Un elenco di nomi di campi da eliminare dal record di input prima della scrittura. Si esclude a vicenda con "keep" e "only".
keep list[str] Un elenco di nomi di campi da conservare nel record di input. Tutti gli altri campi vengono eliminati prima della scrittura. Si esclude a vicenda con "drop" e "only".
solo str Il nome di un singolo campo del record da scrivere. Si esclude a vicenda con "keep" e "drop".
partition_fields list[str] Campi utilizzati per creare una specifica di partizione che viene applicata quando vengono create le tabelle. Per un campo "foo", le trasformazioni di partizione disponibili sono:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

Per ulteriori informazioni sulle trasformazioni delle partizioni, visita la pagina https://iceberg.apache.org/spec/#partition-transforms.

sort_fields list[str] Campi utilizzati per impostare l'ordine di ordinamento della tabella, applicato quando viene creata la tabella. Ogni voce ha il formato <term> [asc|desc] [nulls first|nulls last], dove <term> è un nome di campo o una delle trasformazioni della partizione (ad es. bucket(col, 4), day(ts)). La direzione è predefinita su crescente; l'ordine dei valori null è predefinito su nulls-first per crescente e nulls-last per decrescente. Nota: questa operazione imposta l'ordine di ordinamento dichiarato della tabella come metadati; non fa sì che Beam ordini fisicamente i record prima della scrittura. Per ulteriori informazioni sugli ordini di ordinamento, visita la pagina https://iceberg.apache.org/spec/#sort-orders.
table_properties map[str, str] Proprietà della tabella Iceberg da impostare sulla tabella al momento della creazione. Per ulteriori informazioni sulle proprietà delle tabelle, visita la pagina https://iceberg.apache.org/docs/latest/configuration/#table-properties.
triggering_frequency_seconds int32 Per una pipeline di flussi di dati, imposta la frequenza con cui vengono prodotti gli snapshot.

Passaggi successivi

Per ulteriori informazioni ed esempi di codice, consulta i seguenti argomenti: