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à.
Puoi accedere alle tabelle S3 da motori di query open source come Apache Spark utilizzando Amazon S3 Tables Catalog per Apache Iceberg catalogo clienti. Catalogo di tabelle Amazon S3 per Apache Iceberg è una libreria open source ospitata da AWS Labs. Funziona traducendo Apache Iceberg operazioni nei motori di query (come l'individuazione delle tabelle, gli aggiornamenti dei metadati e l'aggiunta o la rimozione di tabelle) nelle operazioni dell'API S3 Tables.
Catalogo di tabelle Amazon S3 per Apache Iceberg è distribuito come Maven JAR chiamatos3-tables-catalog-for-iceberg.jar
. È possibile creare il catalogo dei clienti JAR dal AWS Labs GitHub archivialo
Utilizzo del catalogo di tabelle Amazon S3 per Apache Iceberg con Apache Spark
Puoi usare Amazon S3 Tables Catalog per Apache Iceberg catalogo client per connettersi alle tabelle da applicazioni open source quando si inizializza un Spark sessione. Nella configurazione della sessione si specifica Iceberg e dipendenze Amazon S3 e crea un catalogo personalizzato che utilizza il tuo table bucket come magazzino di metadati.
Per inizializzare un Spark sessione utilizzando Amazon S3 Tables Catalog per Apache Iceberg
-
Inizializzazione Spark utilizzando il seguente comando. Per utilizzare il comando, sostituisci il catalogo di tabelle Amazon S3 con Apache Iceberg
version number
con l'ultima versione di AWS Labs GitHub repositorye poi table bucket ARN
con il proprio bucket ARN.spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1,software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:
0.1.4
\ --conf spark.sql.catalog.s3tablesbucket
=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.s3tablesbucket
.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \ --conf spark.sql.catalog.s3tablesbucket
.warehouse=arn:aws:s3tables:us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
\ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
Interrogazione di tabelle S3 con Spark SQL
Utilizzo Spark, puoi eseguire operazioni DQL, DML e DDL sulle tabelle S3. Quando si eseguono query sulle tabelle, si utilizza il nome completo della tabella, incluso il nome del catalogo delle sessioni, seguendo questo schema:
CatalogName
.NamespaceName
.TableName
Le seguenti query di esempio mostrano alcuni modi in cui è possibile interagire con le tabelle S3. Per utilizzare queste query di esempio nel tuo motore di query, sostituisci i user input placeholder
valori con i tuoi.
Per interrogare le tabelle con Spark
-
Creare uno spazio dei nomi
spark.sql(" CREATE NAMESPACE IF NOT EXISTS
s3tablesbucket
.my_namespace
") -
Creare una tabella
spark.sql(" CREATE TABLE IF NOT EXISTS
s3tablesbucket
.my_namespace
.`my_table
` ( id INT, name STRING, value INT ) USING iceberg ") -
Esecuzione di una query su una tabella
spark.sql(" SELECT * FROM
s3tablesbucket
.my_namespace
.`my_table
` ").show() -
Inserire dati in una tabella
spark.sql( """ INSERT INTO
s3tablesbucket
.my_namespace
.my_table
VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """) -
Carica un file di dati esistente in una tabella
Leggere 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
)Scrivere i dati in una tabella Iceberg.
data_file.writeTo("
s3tablesbucket
.my_namespace
.my_table
").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()