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 una tabella di Amazon S3
Una tabella Amazon S3 è una sottorisorsa di un bucket di tabella. Le tabelle sono memorizzate in Apache Iceberg formato in modo da poterle utilizzare utilizzando motori di query e altre applicazioni che supportano Apache Iceberg. Amazon S3 ottimizza continuamente le tabelle per contribuire a ridurre i costi di storage e migliorare le prestazioni delle query di analisi.
Quando crei una tabella, Amazon S3 genera automaticamente una posizione di magazzino per la tabella. Una posizione di magazzino è una posizione S3 unica in cui è possibile leggere e scrivere oggetti associati alla tabella. Nell'esempio seguente viene illustrato il formato di una posizione del warehouse:
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
Il nome della risorsa Amazon (ARN) per le tabelle ha il seguente formato:
arn:aws:s3tables:
region
:owner-account-id
:bucket/bucket-name
/table/table-id
Per impostazione predefinita, puoi creare fino a 10.000 tabelle in un table bucket. Per richiedere un aumento della quota per i bucket di tabelle o le tabelle, contattare Supporto
Puoi creare una tabella utilizzando la console Amazon S3, l'API REST di Amazon S3 AWS SDKs AWS Command Line Interface ,AWS CLI() o i motori di query collegati ai bucket di tabella.
Quando si crea una tabella, è possibile specificare le impostazioni di crittografia per quella tabella, a meno che non si stia creando la tabella con Athena. Se non specificate le impostazioni di crittografia, la tabella viene crittografata con le impostazioni predefinite per il bucket di tabella. Per ulteriori informazioni, consulta Specificare la crittografia per le tabelle.
Prerequisiti per la creazione di tabelle
Per creare una tabella, devi prima fare quanto segue:
Creare uno spazio dei nominel secchio da tavolo.
Assicurati di disporre delle autorizzazioni AWS Identity and Access Management (IAM) per
s3tables:CreateTable
e.s3tables:PutTableData
Nota
Se utilizzi la crittografia SSE-KMS per la tua tabella, hai bisogno delle autorizzazioni e dell'
DescribeKey
autorizzazione pers3tables:PutTableEncryption
la chiave scelta. AWS KMS Inoltre, la AWS KMS chiave che usi deve concedere a S3 Tables l'autorizzazione per eseguire la manutenzione automatica delle tabelle. Per ulteriori informazioni, consulta Requisiti di autorizzazione per la crittografia SSE-KMS di S3 Tables
Per informazioni sui nomi di tabella validi, consultaRegole di denominazione per tabelle e spazi dei nomi.
Importante
Quando create tabelle, assicuratevi di utilizzare tutte le lettere minuscole nei nomi delle tabelle e nelle definizioni delle tabelle. Ad esempio, assicuratevi che i nomi delle colonne siano tutti in minuscolo. Se il nome o la definizione della tabella contengono lettere maiuscole, la tabella non è supportata da AWS Lake Formation o da. AWS Glue Data Catalog In questo caso, la tua tabella non sarà visibile ai servizi di AWS analisi come Amazon Athena, anche se i tuoi table bucket sono integrati con AWS servizi di analisi.
Se la definizione della tabella contiene lettere maiuscole, ricevi il seguente messaggio di errore quando esegui una SELECT
query in Athena: «GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model. ValidationException: Risorsa federativa non supportata: nomi di tabelle o colonne non validi
».
La procedura seguente utilizza la console Amazon S3 per creare una tabella con Amazon Athena. Se non hai ancora creato uno spazio dei nomi nel tuo table bucket, puoi farlo come parte di questo processo. Prima di eseguire i seguenti passaggi, assicurati di aver integrato i tuoi table bucket con i servizi di AWS analisi di questa regione. Per ulteriori informazioni, consulta Utilizzo di Amazon S3 Tables con AWS servizi di analisi.
Nota
Quando crei una tabella utilizzando Athena, quella tabella eredita le impostazioni di crittografia predefinite dal bucket della tabella. Se desideri utilizzare un tipo di crittografia diverso, devi creare la tabella utilizzando un altro metodo.
Per creare una tabella
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Bucket di tabelle.
-
Nella pagina Table buckets, scegli il bucket in cui vuoi creare una tabella.
-
Nella pagina dei dettagli del bucket, scegli Crea tabella con Athena.
-
Nella finestra di dialogo Crea tabella con Athena, effettuate una delle seguenti operazioni:
-
Create un nuovo namespace. Scegli Crea uno spazio dei nomi, quindi inserisci un nome nel campo Nome dello spazio dei nomi. I nomi dei namespace devono contenere da 1 a 255 caratteri e devono essere univoci all'interno del bucket di tabella. I caratteri validi sono a—z, 0—9 e i caratteri di sottolineatura ().
_
I caratteri di sottolineatura non sono consentiti all'inizio dei nomi dei namespace. -
Selezionare Create namespace (Crea spazio dei nomi).
-
Specificate uno spazio dei nomi esistente. Scegli Specificare uno spazio dei nomi esistente all'interno di questo bucket di tabella. Quindi scegli Scegli tra i namespace esistenti o Inserisci un nome per lo spazio dei nomi esistente. Se hai più di 1.000 namespace nel tuo bucket, devi inserire il nome del namespace se non compare nell'elenco.
-
-
Scegli Crea tabella con Athena.
-
Si apre la console Amazon Athena e viene visualizzato l'editor di query Athena. Il campo Catalog deve essere compilato con s3tablescatalog/ seguito dal nome del table bucket, ad esempio s3tablescatalog/.
amzn-s3-demo-bucket
Il campo Database deve essere compilato con lo spazio dei nomi creato o selezionato in precedenza.Nota
Se non vedi questi valori nei campi Catalogo e Database, assicurati di aver integrato i tuoi table bucket con i servizi di AWS analisi in questa regione. Per ulteriori informazioni, consulta Utilizzo di Amazon S3 Tables con AWS servizi di analisi.
-
L'editor di query è popolato con una query di esempio che puoi utilizzare per creare una tabella. Modificate la query per specificare il nome della tabella e le colonne che desiderate assegnare alla tabella.
-
Quando hai finito di modificare la query, scegli Esegui per creare la tabella.
Nota
-
Se ricevi l'errore
«Autorizzazioni insufficienti per eseguire la query». Il principale non ha alcun privilegio sulla risorsa specificata»
Quando si tenta di eseguire una query in Athena, è necessario disporre delle necessarie autorizzazioni Lake Formation sul tavolo. Per ulteriori informazioni, consulta Concessione dell'autorizzazione su una tabella o un database. -
Se ricevi l'errore
«Iceberg non può accedere alla risorsa richiesta»
quando provi a eseguire una query in Athena, vai alla console e assicurati di esserti concesso le autorizzazioni per AWS Lake Formation il catalogo e il database di table bucket (namespace) che hai creato. Non specificate una tabella quando concedete queste autorizzazioni. Per ulteriori informazioni, consulta Concessione dell'autorizzazione su una tabella o un database. -
Se ricevi il seguente messaggio di errore durante l'esecuzione di una
SELECT
query in Athena, questo messaggio è causato dalla presenza di lettere maiuscole nel nome della tabella o nei nomi delle colonne nella definizione della tabella:«GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model. ValidationException: Risorsa
federativa non supportata: nomi di tabelle o colonne non validi.» Assicurati che i nomi delle tabelle e delle colonne siano tutti in minuscolo.
-
Se la creazione della tabella ha avuto successo, il nome della nuova tabella viene visualizzato nell'elenco delle tabelle in Athena. Quando torni alla console Amazon S3, la tua nuova tabella viene visualizzata nell'elenco Tabelle nella pagina dei dettagli del bucket per il tuo table bucket dopo aver aggiornato l'elenco.
Questo esempio mostra come creare una tabella con uno schema utilizzando AWS CLI e specificando i metadati della tabella con JSON. Per utilizzare questo esempio, sostituiscili
con le tue informazioni.user
input placeholders
aws s3tables create-table --cli-input-json file://
mytabledefinition.json
Per il mytabledefinition.json
file, utilizzate la seguente definizione di tabella di esempio. Per utilizzare questo comando, sostituisci
con le tue informazioni. user input
placeholders
{ "tableBucketARN": "arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
", "namespace": "your_namespace
", "name": "example_table
", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [ {"name": "id
", "type": "int
","required": true
}, {"name": "name
", "type": "string
"}, {"name": "value
", "type": "int
"} ] } } } }
Puoi creare una tabella in un motore di query supportato collegato ai bucket della tabella, ad esempio in un Apache Spark sessione su Amazon EMR.
L'esempio seguente mostra come creare una tabella con Spark utilizzando CREATE
istruzioni e aggiungere dati di tabella utilizzando INSERT
istruzioni o leggendo dati da un file esistente. Per utilizzare questo comando, sostituisci
con le tue informazioni.user input
placeholders
spark.sql( " CREATE TABLE IF NOT EXISTS s3tablesbucket.
example_namespace
.`example_table
` ( id INT, name STRING, value INT ) USING iceberg " )
Dopo aver creato la tabella, puoi caricare i dati nella tabella. Scegli tra i seguenti metodi:
Aggiungere dati alla tabella utilizzando l'
INSERT
istruzione.spark.sql( """ INSERT INTO s3tablesbucket.
my_namespace
.my_table
VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """)Caricare un file di dati esistente.
Leggi i dati in Spark:
val data_file_location = "
Path such as S3 URI to data file
" val data_file = spark.read.parquet(data_file_location
)Scrivi i dati in una tabella Iceberg:
data_file.writeTo("s3tablesbucket.
my_namespace
.my_table
").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()