Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vous pouvez accéder aux tables S3 à partir de moteurs de requêtes open source tels que Apache Spark en utilisant le catalogue de tables Amazon S3 pour Apache Iceberg catalogue client. Catalogue de tables Amazon S3 pour Apache Iceberg est une bibliothèque open source hébergée par AWS Labs. Cela fonctionne en traduisant Apache Iceberg opérations dans vos moteurs de requêtes (telles que la découverte de tables, les mises à jour de métadonnées et l'ajout ou la suppression de tables) dans les opérations de l'API S3 Tables.
Catalogue de tables Amazon S3 pour Apache Iceberg est distribué sous forme de Maven JAR appelés3-tables-catalog-for-iceberg.jar
. Vous pouvez créer le catalogue client JAR depuis le AWS Labs GitHub dépôt
Utilisation du catalogue de tables Amazon S3 pour Apache Iceberg avec Apache Spark
Vous pouvez utiliser le catalogue de tables Amazon S3 pour Apache Iceberg catalogue client pour se connecter à des tables à partir d'applications open source lorsque vous initialisez un Spark séance. Dans la configuration de votre session, vous spécifiez Iceberg et les dépendances d'Amazon S3, et créez un catalogue personnalisé qui utilise votre compartiment de tables comme entrepôt de métadonnées.
Pour initialiser un Spark session utilisant le catalogue de tables Amazon S3 pour Apache Iceberg
-
Initialiser Spark à l'aide de la commande suivante. Pour utiliser la commande, remplacez le catalogue de tables Amazon S3 par Apache Iceberg
version number
avec la dernière version de AWS Labs GitHub référentiel, et le table bucket ARN
avec votre propre ARN de bucket de table.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
Interrogation de tables S3 avec Spark SQL
Utilisation Spark, vous pouvez exécuter des opérations DQL, DML et DDL sur des tables S3. Lorsque vous interrogez des tables, vous utilisez le nom complet de la table, y compris le nom du catalogue de sessions, selon le modèle suivant :
CatalogName
.NamespaceName
.TableName
Les exemples de requêtes suivants montrent plusieurs manières d’interagir avec les tables S3. Pour utiliser ces exemples de requêtes dans votre moteur de requêtes, remplacez les user input placeholder
valeurs par les vôtres.
Pour interroger des tables avec Spark
-
Création d’un espace de noms
spark.sql(" CREATE NAMESPACE IF NOT EXISTS
s3tablesbucket
.my_namespace
") -
Créer une table
spark.sql(" CREATE TABLE IF NOT EXISTS
s3tablesbucket
.my_namespace
.`my_table
` ( id INT, name STRING, value INT ) USING iceberg ") -
Interroger une table
spark.sql(" SELECT * FROM
s3tablesbucket
.my_namespace
.`my_table
` ").show() -
Insérer des données dans un tableau
spark.sql( """ INSERT INTO
s3tablesbucket
.my_namespace
.my_table
VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """) -
Charger un fichier de données existant dans une table
Lisez les données dans Spark.
val data_file_location = "Path such as S3 URI to data file" val data_file = spark.read.parquet(
data_file_location
)Écrivez les données dans une table Iceberg.
data_file.writeTo("
s3tablesbucket
.my_namespace
.my_table
").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()