Creazione di tabelle Iceberg - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di tabelle Iceberg

Per creare una tabella Iceberg da usare in Athena, puoi usare CREATE TABLE un'istruzione come documentato in questa pagina oppure puoi usare un crawler. AWS Glue

Utilizzo di una dichiarazione CREATE TABLE

Athena crea tabelle Iceberg v2. Per la differenza tra le tabelle v1 e v2, consulta Modifiche al tipo di formato nella documentazione di Apache Iceberg.

Athena CREATE TABLE crea una tabella Iceberg senza dati. È possibile eseguire una query su una tabella da sistemi esterni come Apache Spark direttamente se la tabella utilizza il Catalogo glue open source Iceberg. Non è necessario creare una tabella esterna.

avvertimento

L'esecuzione di CREATE EXTERNAL TABLE si traduce nel messaggio di errore External keyword not supported for table type ICEBERG (Parola chiave esterna non supportata per il tipo di tabella ICEBERG).

Per creare una tabella Iceberg da Athena, imposta la proprietà della tabella 'table_type' su 'ICEBERG' nella clausola TBLPROPERTIES, come nel seguente riepilogo della sintassi.

CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' ='ICEBERG' [, property_name=property_value] )

Per informazioni sui tipi di dati su cui puoi eseguire query nelle tabelle Iceberg, consulta Tipi di dati supportati per tabelle Iceberg in Athena.

Partizionamento

Per creare tabelle Iceberg con partizioni, utilizza la sintassi PARTITIONED BY. Le colonne utilizzate per il partizionamento devono essere prima specificate nelle dichiarazioni delle colonne. All'interno della clausola PARTITIONED BY, il tipo di colonna non deve essere incluso. È inoltre possibile definire le trasformazioni delle partizioni nella sintassi CREATE TABLE. Per specificare più colonne per il partizionamento, separa le colonne con una virgola (,), come nell'esempio seguente.

CREATE TABLE iceberg_table (id bigint, data string, category string) PARTITIONED BY (category, bucket(16, id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' = 'ICEBERG' )

La tabella riportata di seguito mostra le funzioni di trasformazione delle partizioni disponibili.

Funzione Descrizione Tipi supportati
year(ts) Partizione per anno date, timestamp
month(ts) Partizione per mese date, timestamp
day(ts) Partizione per giorno date, timestamp
hour(ts) Partizione per ora timestamp
bucket(N, col) Partizione per valore hash mod N bucket Questo è lo stesso concetto dell'hash bucketing per le tabelle Hive. int, long, decimal, date, timestamp, string, binary
truncate(L, col) Partizione per valore troncato su L int, long, decimal, string

Athena supporta il partizionamento nascosto di Iceberg. Per ulteriori informazioni, consulta Partizionamento nascosto di Iceberg nella documentazione di Apache Iceberg.

Proprietà tabella

Questa sezione descrive le proprietà della tabella che è possibile specificare come coppie chiave-valore nella clausola TBLPROPERTIES dell'istruzione CREATE TABLE. Athena consente solo un elenco predefinito di coppie chiave-valore nelle proprietà della tabella per creare o modificare le tabelle Iceberg. Le tabelle seguenti mostrano le proprietà della tabella che è possibile specificare in anteprima. Per ulteriori informazioni sulle opzioni di compattazione, consulta Ottimizzazione delle tabelle Iceberg più avanti in questo documento. Se si desidera che Athena supporti una specifica proprietà di configurazione della tabella open source, inviare un feedback all'indirizzo athena-feedback@amazon.com.

format

Descrizione Formato dei dati del file
Valori delle proprietà consentiti Le combinazioni di formato di file supportati e compressione variano in base alla versione del motore Athena. Per ulteriori informazioni, consulta Supporto per la compressione delle tabelle Iceberg in base al formato di file.
Valore predefinito parquet

write_compression

Descrizione Codec di compressione dei file
Valori delle proprietà consentiti Le combinazioni di formato di file supportati e compressione variano in base alla versione del motore Athena. Per ulteriori informazioni, consulta Supporto per la compressione delle tabelle Iceberg in base al formato di file.
Valore predefinito

La compressione di scrittura predefinita varia in base alla versione del motore Athena. Per ulteriori informazioni, consulta Supporto per la compressione delle tabelle Iceberg in base al formato di file.

optimize_rewrite_data_file_threshold

Descrizione Configurazione specifica dell'ottimizzazione dei dati Se ci sono meno file di dati che richiedono un'ottimizzazione rispetto alla soglia specificata, i file non vengono riscritti. Ciò consente l'accumulo di più file di dati per produrre file più vicini alle dimensioni di destinazione e saltare i calcoli non necessari per risparmiare sui costi.
Valori delle proprietà consentiti Un numero positivo. Deve essere inferiore a 50.
Valore predefinito 5

optimize_rewrite_delete_file_threshold

Descrizione Configurazione specifica dell'ottimizzazione dei dati Se a un file di dati sono associati meno file di eliminazione rispetto alla soglia, il file di dati non viene riscritto. Ciò consente l'accumulo di più file di eliminazione per ogni file di dati per risparmiare sui costi.
Valori delle proprietà consentiti Un numero positivo. Deve essere inferiore a 50.
Valore predefinito 2

vacuum_min_snapshots_to_keep

Descrizione

Numero minimo di snapshot da mantenere sul ramo principale di una tabella.

Questo valore ha la precedenza sulla proprietà vacuum_max_snapshot_age_seconds. Se il numero minimo di snapshot rimanenti è più vecchio dell'età specificata da vacuum_max_snapshot_age_seconds, gli snapshot vengono conservati e il valore di vacuum_max_snapshot_age_seconds viene ignorato.

Valori delle proprietà consentiti Un numero positivo.
Valore predefinito 1

vacuum_max_snapshot_age_seconds

Descrizione Età massima degli snapshot da mantenere nel ramo principale. Questo valore viene ignorato se il numero minimo di snapshot rimanenti specificato da vacuum_min_snapshots_to_keep è più vecchio dell'età specificata. Questa proprietà di comportamento della tabella corrisponde alla proprietà nella configurazione di Apache history.expire.max-snapshot-age-ms Iceberg.
Valori delle proprietà consentiti Un numero positivo.
Valore predefinito 432.000 secondi (5 giorni)

vacuum_max_metadata_files_to_keep

Descrizione Il numero massimo di file di metadati precedenti da conservare nel ramo principale della tabella.
Valori delle proprietà consentiti Un numero positivo.
Valore predefinito 100

Istruzione CREATE TABLE (CREA TABELLA) di esempio

Nell'esempio seguente viene creata una tabella Iceberg che ha tre colonne.

CREATE TABLE iceberg_table ( id int, data string, category string) PARTITIONED BY (category, bucket(16,id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/iceberg-folder' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )

CREATE TABLE AS SELECT (CTAS)

Per informazioni sulla creazione di una tabella Iceberg utilizzando l'istruzione CREATE TABLE AS, consulta CREATE TABLE AS, con particolare attenzione alla sezione Proprietà tabella CTAS.

Utilizzo di un crawler AWS Glue

Puoi usare un AWS Glue crawler per registrare automaticamente le tue tabelle Iceberg in. AWS Glue Data Catalog Se desideri migrare da un altro catalogo Iceberg, puoi creare e pianificare un AWS Glue crawler e fornire i percorsi Amazon S3 in cui si trovano le tabelle Iceberg. Puoi specificare la profondità massima dei percorsi di Amazon S3 che il crawler AWS Glue può attraversare. Dopo aver pianificato un AWS Glue crawler, il crawler estrae le informazioni sullo schema e le aggiorna con le modifiche dello schema ogni volta che viene eseguito. AWS Glue Data Catalog Il AWS Glue crawler supporta la fusione dello schema tra istantanee e aggiorna la posizione più recente del file di metadati in. AWS Glue Data Catalog Per ulteriori informazioni, consulta Data Catalog and crawler in. AWS Glue