I/O gestiti da Dataflow per Apache Iceberg

L'I/O gestito 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 Portable Runner)
Funzionalità di lettura Lettura batch
Funzionalità di scrittura

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

Requisiti

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

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

Configurazione

L'I/O gestito per Apache Iceberg supporta i seguenti parametri di configurazione:

Lettura ICEBERG

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 è null o vuoto, verranno lette tutte le colonne.
filter str Predicato di tipo 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 colonne da leggere esclusivamente. Se è null o vuoto, verranno lette tutte le colonne.

Scrittura ICEBERG

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 Abilita lo sharding dinamico per regolare automaticamente il numero di writer paralleli in base al volume dei dati. Gestisce l'asimmetria dei dati suddividendo ulteriormente le partizioni in più shard per evitare colli di bottiglia durante le scritture a elevata velocità effettiva. 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: - none: 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".
only 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 di partizione, visita la pagina https://iceberg.apache.org/spec/#partition-transforms.

sort_fields list[str] Campi utilizzati per impostare l'ordinamento della tabella, applicato al momento della creazione della tabella. Ogni voce ha il formato <term> [asc|desc] [nulls first|nulls last], dove <term> è un nome di campo o una delle trasformazioni di partizione (ad es. bucket(col, 4), day(ts)). La direzione predefinita è crescente; l'ordine dei valori null predefinito è nulls-first per l'ordine crescente e nulls-last per l'ordine decrescente. Nota: questa impostazione definisce l'ordinamento dichiarato della tabella come metadati; non fa sì che Beam ordini fisicamente i record prima della scrittura. Per ulteriori informazioni sugli ordinamenti, 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: