L'I/O gestito supporta le seguenti funzionalità per Apache Iceberg:
| Cataloghi |
|
|---|---|
| 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:
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:
- Leggere da Apache Iceberg
- Leggere da Apache Iceberg (interfaccia utente del generatore di job)
- Scrivere in Apache Iceberg