Mengakses tabel Amazon S3 dengan Katalog Tabel Amazon S3 untuk Apache Iceberg - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengakses tabel Amazon S3 dengan Katalog Tabel Amazon S3 untuk Apache Iceberg

Anda dapat mengakses tabel S3 dari mesin kueri sumber terbuka seperti Apache Spark dengan menggunakan Katalog Tabel Amazon S3 Apache Iceberg untuk katalog klien. Katalog Tabel Amazon S3 untuk Apache Iceberg adalah pustaka sumber terbuka yang diselenggarakan oleh AWS Labs. Ini bekerja dengan menerjemahkan Apache Iceberg operasi di mesin kueri Anda (seperti penemuan tabel, pembaruan metadata, dan menambahkan atau menghapus tabel) ke dalam operasi API Tabel S3.

Katalog Tabel Amazon S3 untuk Apache Iceberg didistribusikan sebagai yang Maven JAR disebut. s3-tables-catalog-for-iceberg.jar Anda dapat membangun katalog klien JAR dari AWS Labs GitHubrepositori atau mengunduhnya dari Maven. Saat menghubungkan ke tabel, katalog klien JAR digunakan sebagai dependensi saat Anda menginisialisasi Spark sesi untuk. Apache Iceberg

Menggunakan Katalog Tabel Amazon S3 untuk dengan Apache Iceberg Apache Spark

Anda dapat menggunakan Katalog Tabel Amazon S3 untuk katalog Apache Iceberg klien untuk menyambung ke tabel dari aplikasi sumber terbuka saat Anda menginisialisasi sesi. Spark Dalam konfigurasi sesi, Anda menentukan Iceberg dependensi Amazon S3, dan membuat katalog khusus yang menggunakan keranjang tabel sebagai gudang metadata.

Prasyarat
Untuk menginisialisasi Spark sesi menggunakan Katalog Tabel Amazon S3 untuk Apache Iceberg
  • Inisialisasi Spark menggunakan perintah berikut. Untuk menggunakan perintah, ganti Katalog Tabel Amazon S3 Apache Iceberg version number dengan versi terbaru dari AWS Labs GitHubrepositori, dan table bucket ARN dengan ARN bucket meja Anda sendiri.

    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

Menanyakan tabel S3 dengan SQL Spark

MenggunakanSpark, Anda dapat menjalankan operasi DQL, DML, dan DDL pada tabel S3. Saat Anda menanyakan tabel, Anda menggunakan nama tabel yang sepenuhnya memenuhi syarat, termasuk nama katalog sesi yang mengikuti pola ini:

CatalogName.NamespaceName.TableName

Contoh kueri berikut menunjukkan beberapa cara Anda dapat berinteraksi dengan tabel S3. Untuk menggunakan contoh kueri ini di mesin kueri Anda, ganti user input placeholder nilainya dengan milik Anda sendiri.

Untuk menanyakan tabel dengan Spark
  • Buat namespace

    spark.sql(" CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.my_namespace")
  • Membuat tabel

    spark.sql(" CREATE TABLE IF NOT EXISTS s3tablesbucket.my_namespace.`my_table` ( id INT, name STRING, value INT ) USING iceberg ")
  • Mengkueri Tabel

    spark.sql(" SELECT * FROM s3tablesbucket.my_namespace.`my_table` ").show()
  • Masukkan data ke dalam tabel

    spark.sql( """ INSERT INTO s3tablesbucket.my_namespace.my_table VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """)
  • Memuat file data yang ada ke dalam tabel

    1. Baca data ke Spark.

      val data_file_location = "Path such as S3 URI to data file" val data_file = spark.read.parquet(data_file_location)
    2. Tulis data ke dalam tabel Gunung Es.

      data_file.writeTo("s3tablesbucket.my_namespace.my_table").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()