Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengakses Katalog Data
Anda dapat menggunakan AWS Glue Data Catalog (Katalog Data) untuk menemukan dan memahami data Anda. Katalog Data menyediakan cara yang konsisten untuk mempertahankan definisi skema, tipe data, lokasi, dan metadata lainnya. Anda dapat mengakses Katalog Data menggunakan metode berikut:
AWS Glue konsol — Anda dapat mengakses dan mengelola Katalog Data melalui AWS Glue konsol, antarmuka pengguna berbasis web. Konsol memungkinkan Anda untuk menelusuri dan mencari database, tabel, dan metadata terkait, serta membuat, memperbarui, dan menghapus definisi metadata.
Perayap AWS Glue — Crawler adalah program yang secara otomatis memindai sumber data Anda dan mengisi Katalog Data dengan metadata. Anda dapat membuat dan menjalankan crawler untuk menemukan dan membuat katalog data dari berbagai sumber seperti Amazon S3, Amazon, RDS Amazon DynamoDB, dan basis data relasional yang sesuai seperti SQL My Amazon CloudWatch, JDBC dan SQL Postgre serta beberapa non-sumber seperti Snowflake dan Google.AWS BigQuery
AWS Glue APIs— Anda dapat mengakses Katalog Data secara terprogram menggunakan. AWS Glue APIs Ini APIs memungkinkan Anda untuk berinteraksi dengan Katalog Data secara terprogram, memungkinkan otomatisasi dan integrasi dengan aplikasi dan layanan lain.
-
AWS Command Line Interface (AWS CLI) — Anda dapat menggunakan AWS CLI untuk mengakses dan mengelola Katalog Data dari baris perintah. CLIIni menyediakan perintah untuk membuat, memperbarui, dan menghapus definisi metadata, serta menanyakan dan mengambil informasi metadata.
-
Integrasi dengan AWS layanan lain - Katalog Data terintegrasi dengan berbagai AWS layanan lain, memungkinkan Anda untuk mengakses dan memanfaatkan metadata yang disimpan dalam katalog. Misalnya, Anda dapat menggunakan Amazon Athena untuk menanyakan sumber data menggunakan metadata di Katalog Data, dan gunakan AWS Lake Formation untuk mengelola akses dan tata kelola data untuk sumber daya Katalog Data.
Menghubungkan ke Katalog Data menggunakan titik akhir AWS Glue Iceberg REST
AWS Glue RESTEndpoint Iceberg mendukung API operasi yang ditentukan dalam spesifikasi Apache Iceberg. REST Dengan menggunakan REST klien Iceberg, Anda dapat menghubungkan aplikasi yang berjalan di mesin analitik ke REST katalog yang dihosting di Katalog Data.
Titik akhir mendukung spesifikasi tabel Apache Iceberg - v1 dan v2, default ke v2. Saat menggunakan spesifikasi tabel Iceberg v1, Anda harus menentukan v1 dalam panggilan. API Menggunakan API operasi, Anda dapat mengakses tabel Iceberg yang disimpan di penyimpanan objek Amazon S3 dan penyimpanan Tabel Amazon S3.
Konfigurasi titik akhir
Anda dapat mengakses REST katalog AWS Glue Iceberg menggunakan titik akhir layanan. Lihat panduan referensi titik akhir AWS Glue layanan untuk titik akhir khusus wilayah. Misalnya, saat menghubungkan ke AWS Glue Wilayah us-east-1, Anda perlu mengonfigurasi properti endpoint sebagai berikut: URI
Endpoint : https://glue.us-east-1
.amazonaws.com/iceberg
Properti konfigurasi tambahan — Saat menggunakan klien Iceberg untuk menghubungkan mesin analitik seperti Spark ke titik akhir layanan, Anda diminta untuk menentukan properti konfigurasi aplikasi berikut:
catalog_name ="mydatacatalog"
aws_account_id ="123456789012"
aws_region = "us-east-1" spark = SparkSession.builder \ ... \ .config("spark.sql.defaultCatalog", catalog_name) \ .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \ .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \ .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \ .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \ .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \ .getOrCreate()
Menghubungkan ke Katalog Data menggunakan titik akhir AWS Glue ekstensi Iceberg REST
AWS Glue Titik akhir REST ekstensi Iceberg menyediakan tambahanAPIs, yang tidak ada dalam REST spesifikasi Apache Iceberg, dan menyediakan kemampuan perencanaan pemindaian sisi server. Tambahan ini APIs digunakan saat Anda mengakses tabel yang disimpan di penyimpanan terkelola Amazon Redshift. Titik akhir dapat diakses dari aplikasi menggunakan ekstensi Apache AWS Glue Data Catalog Iceberg.
Konfigurasi titik akhir -- Katalog dengan tabel di penyimpanan terkelola Redshift dapat diakses menggunakan titik akhir layanan. Lihat panduan referensi titik akhir AWS Glue layanan untuk titik akhir khusus wilayah. Misalnya, saat menghubungkan ke AWS Glue Wilayah us-east-1, Anda perlu mengonfigurasi properti endpoint sebagai berikut: URI
Endpoint : https://glue.us-east-1
.amazonaws.com/extensions
catalog_name ="myredshiftcatalog"
aws_account_id ="123456789012"
aws_region = "us-east-1" spark = SparkSession.builder \ .config("spark.sql.defaultCatalog", catalog_name) \ .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog_name}.type", "glue") \ .config(f"spark.sql.catalog.{catalog_name}.glue.id", "{123456789012}:redshiftnamespacecatalog/redshiftdb") \ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \ .getOrCreate()
Mengautentikasi dan mengotorisasi akses ke titik akhir layanan AWS Glue
APIpermintaan ke AWS Glue Data Catalog titik akhir diautentikasi menggunakan AWS Signature Version 4 (SigV4). Lihat bagian AWS Tanda Tangan Versi 4 untuk API permintaan untuk mempelajari lebih lanjut tentang AWS SiGv4.
Saat mengakses endpoint dan AWS Glue metadata AWS Glue layanan, aplikasi mengasumsikan peran yang memerlukan tindakanIAM. glue:getCatalog
IAM
RESToperasi | RESTjalan | AWS Glue IAMAksi | CloudTrail EventName | Izin Lake Formation |
---|---|---|---|---|
GetConfig | GET/konfigurasi | GetCatalog |
GetConfig |
Tidak diperlukan. |
ListNamespaces | GET/ruang nama | GetDatabases | GetDatabases | ALL, DESCRIBE, SELECT |
CreateNamespace | POST/ruang nama | CreateDatabase | CreateDatabase | ALL, CREATE_DATABASE |
LoadNamespaceMetadata | GET/ruang nama/ {ns} | GetDatabase | GetDatabase | ALL, DESCRIBE, SELECT |
UpdateProperties | POST /namespaces/{ns}/properties | UpdateDatabase | UpdateDatabase | ALL, ALTER |
DeleteNamespace | DELETE/namespace/ {ns} | DeleteDatabase | DeleteDatabase | ALL, DROP |
ListTables | GET /namespaces/{ns}/tables | GetTables | GetTables | ALL, SELECT, DESCRIBE |
CreateTable | POST /namespaces/{ns}/tables | CreateTable | CreateTable | ALL, CREATE_TABLE |
LoadTable | GET /namespaces/{ns}/tables/{tbl} | GetTable | GetTable | ALL, SELECT, DESCRIBE |
TableExists | HEAD /namespaces/{ns}/tables/{tbl} | GetTable | GetTable | ALL, SELECT, DESCRIBE |
UpdateTable | POST /namespaces/{ns}/tables/{tbl} | UpdateTable | UpdateTable | ALL, ALTER |
DeleteTable | DELETE /namespaces/{ns}/tables/{tbl} | DeleteTable | DeleteTable | ALL, DROP |
Anda dapat menggunakanIAM, AWS Lake Formation, atau izin mode hibrida Lake Formation untuk mengelola akses ke Katalog Data default dan objeknya.
Katalog federasi di memiliki lokasi data AWS Glue Data Catalog terdaftar Lake Formation. Lake Formationterintegrasi dengan Katalog Data dan menyediakan izin gaya database untuk mengelola akses pengguna ke objek katalog. Di Lake Formation, izin harus disiapkan untuk IAM pengguna atau peran yang digunakan untuk membuat, menyisipkan, atau menghapus data. Izinnya sama dengan AWS Glue tabel yang ada:
-
CREATE_ CATALOG - Diperlukan untuk membuat katalog
CREATE_ DATABASE - Diperlukan untuk membuat database
CREATE_ TABLE - Diperlukan untuk membuat tabel
DELETE— Diperlukan untuk menghapus data dari tabel
DESCRIBE— Diperlukan untuk membaca metadata
DROP— Diperlukan untuk menjatuhkan/menghapus tabel atau database
INSERT: Diperlukan ketika kepala sekolah perlu memasukkan data ke dalam tabel
SELECT: Diperlukan ketika kepala sekolah perlu memilih data dari tabel
Untuk informasi selengkapnya, lihat referensi izin Lake Formation di Panduan AWS Lake Formation Pengembang.
Menghubungkan ke Katalog Data dari aplikasi Spark mandiri
Anda dapat terhubung ke Katalog Data dari aplikasi stand menggunakan konektor Apache Iceberg.
Buat IAM peran untuk aplikasi Spark.
-
Connect ke endpoint AWS Glue Iceberg Rest menggunakan konektor Iceberg.
# configure your application. Refer to https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html for best practices on configuring environment variables. export AWS_ACCESS_KEY_ID=$(aws configure get appUser.aws_access_key_id) export AWS_SECRET_ACCESS_KEY=$(aws configure get appUser.aws_secret_access_key) export AWS_SESSION_TOKEN=$(aws configure get appUser.aws_secret_token) export AWS_REGION=us-east-1 export REGION=us-east-1 export AWS_ACCOUNT_ID = {specify your aws account id here} ~/spark-3.5.3-bin-hadoop3/bin/spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.0 \ --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \ --conf "spark.sql.defaultCatalog=spark_catalog" \ --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \ --conf "spark.sql.catalog.spark_catalog.type=rest" \ --conf "spark.sql.catalog.spark_catalog.uri=https://glue.us-east-1.amazonaws.com/iceberg" \ --conf "spark.sql.catalog.spark_catalog.warehouse = {AWS_ACCOUNT_ID}" \ --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-name=glue" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-region=us-east-1" \ --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \ --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider"
-
Kueri data dalam Katalog Data.
spark.sql("create database myicebergdb").show() spark.sql("""CREATE TABLE myicebergdb.mytbl (name string) USING iceberg location 's3://
bucket_name
/mytbl
'""") spark.sql("insert into myicebergdb.mytbl values('demo') ").show()
Pemetaan data antara Amazon Redshift dan Apache Iceberg
Redshift dan Iceberg mendukung berbagai tipe data. Matriks kompatibilitas berikut menguraikan dukungan dan batasan saat memetakan data antara kedua sistem data ini. Silakan merujuk ke Jenis Data Amazon Redshift dan Spesifikasi Tabel Gunung Es Apache
Jenis data Redshift | Alias | Tipe data gunung es |
---|---|---|
SMALLINT | INT2 | int |
INTEGER | INT, INT4 | int |
BIGINT | INT8 | long |
DECIMAL | NUMERIC | desimal |
REAL | FLOAT4 | float |
REAL | FLOAT4 | float |
DOUBLE PRECISION | FLOAT8, FLOAT | double |
CHAR | CHARACTER, NCHAR | string |
VARCHAR | CHARACTER VARYING, NVARCHAR | string |
BPCHAR | string | |
TEXT | string | |
DATE | tanggal | |
TIME | TIME WITHOUT TIMEZONE | Waktu |
TIME | TIME WITH TIMEZONE | Tidak didukung |
TIMESTAMP | TIMESTAMP WITHOUT TIMEZONE | TIMESTAMP |
TIMESTAMPZ | TIMESTAMP WITH TIMEZONE | TIMESTAMPZ |
INTERVALYEARUNTUK MONTH | Tidak didukung | |
INTERVALDAYUNTUK SECOND | Tidak didukung | |
BOOLEAN | BOOL | bool |
HLLSKETCH | Tidak didukung | |
SUPER | Tidak didukung | |
VARBYTE | VARBINARY, BINARY VARYING | biner |
GEOMETRY | Tidak didukung | |
GEOGRAPHY | Tidak didukung |
Pertimbangan dan batasan saat menggunakan AWS Glue Iceberg Catalog REST APIs
Berikut ini adalah pertimbangan dan batasan saat menggunakan perilaku operasi Apache Iceberg REST Catalog Data Definition Language ()DDL.
Pertimbangan
-
DeleteTable APIperilaku — DeleteTable API mendukung opsi pembersihan. Ketika pembersihan diatur ke
true
, data tabel dihapus, jika tidak data tidak dihapus. Untuk tabel di Amazon S3, operasi tidak akan menghapus data tabel. Operasi gagal saat tabel disimpan di Amazon S3 dan.purge = TRUE,
Untuk tabel yang disimpan di penyimpanan terkelola Amazon Redshift, operasi akan menghapus data tabel, mirip dengan
DROP TABLE
perilaku di Amazon Redshift. Operasi gagal saat tabel disimpan di Amazon Redshift dan.purge = FALSE
-
CreateTable APIperilaku —
CreateTable
API Operasi tidak mendukung opsistate-create = TRUE
. -
RenameTable
APIperilaku -RenameTable
Operasi didukung dalam tabel di Amazon Redshift tetapi tidak di Amazon S3. -
DDLoperasi untuk ruang nama dan tabel di Amazon Redshift — Buat, Perbarui, Hapus operasi untuk ruang nama dan tabel di Amazon Redshift adalah operasi asinkron karena bergantung pada kapan grup kerja terkelola Amazon Redshift tersedia dan apakah DML konflik dan transaksi sedang berlangsung dan operasi harus DDL menunggu kunci dan kemudian mencoba melakukan perubahan.
Selama operasi membuat, memperbarui, atau menghapus, titik akhir mengembalikan respons 202 dengan muatan berikut.
{ "transaction-context": "
operation/resource
", "transaction-id": "data-api-request-id:crypto-hash-signature(operation, resource, data-api-uuid)
" }Misalnya, titik akhir akan memberikan respons berikut untuk UpdateTable operasi:
{ "transaction-context": "UpdateTable/arn:aws:glue:us-east-1:123456789012:table/123456789012/cat1/db1/tbl1", "transaction-id": "b0033764-20df-4679-905d-71f20a0cdbe7:ca8a95d54158793204f1f39b4971d2a7" }
Untuk melacak kemajuan transaksi ini, Anda dapat menggunakan
CheckTransactionStatus
API, dalam bentuk berikut:POST /transactions/status Request: { "transaction-context": "UpdateTable/arn:aws:glue:us-east-1:123456789012:table/123456789012/cat1/db1/tbl1", "transaction-id": "transaction-id": "b0033764-20df-4679-905d-71f20a0cdbe7:ca8a95d54158793204f1f39b4971d2a7" } Response: { "status": "IN_PRORESS|SUCCEEDED|FAILED|CANCELED", "error": "message" // if failed }
Batasan
-
Tampilan APIs dalam REST spesifikasi Apache Iceberg tidak didukung dalam AWS Glue Katalog Gunung Es. REST