Buat tabel Iceberg - Amazon Athena

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

Buat tabel Iceberg

Untuk membuat tabel Iceberg untuk digunakan di Athena, Anda dapat menggunakan CREATE TABLE pernyataan seperti yang didokumentasikan pada halaman ini, atau Anda dapat menggunakan crawler. AWS Glue

Gunakan CREATE TABLE pernyataan

Athena membuat tabel Iceberg v2. Untuk perbedaan antara tabel v1 dan v2, lihat Format perubahan versi dalam dokumentasi Apache Iceberg.

Athena CREATE TABLE membuat tabel Iceberg tanpa data. Anda dapat menanyakan tabel dari sistem eksternal seperti Apache Spark secara langsung jika tabel menggunakan katalog lem sumber terbuka Iceberg. Anda tidak perlu membuat tabel eksternal.

Awas

Menjalankan CREATE EXTERNAL TABLE menghasilkan pesan kesalahan Kata kunci eksternal tidak didukung untuk jenis tabel ICEBERG.

Untuk membuat tabel Iceberg dari Athena, atur properti 'table_type' table ke 'ICEBERG' dalam TBLPROPERTIES klausa, seperti pada ringkasan sintaks berikut.

CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] LOCATION 's3://amzn-s3-demo-bucket/your-folder/' TBLPROPERTIES ( 'table_type' ='ICEBERG' [, property_name=property_value] )

Untuk informasi tentang tipe data yang dapat Anda kueri dalam tabel Iceberg, lihat. Tipe data yang didukung untuk tabel Iceberg di Athena

Gunakan partisi

Untuk membuat tabel Iceberg dengan partisi, gunakan sintaks. PARTITIONED BY Kolom yang digunakan untuk partisi harus ditentukan dalam deklarasi kolom terlebih dahulu. Dalam PARTITIONED BY klausa, jenis kolom tidak boleh disertakan. Anda juga dapat mendefinisikan transformasi partisi dalam CREATE TABLE sintaks. Untuk menentukan beberapa kolom untuk partisi, pisahkan kolom dengan karakter koma (,), seperti pada contoh berikut.

CREATE TABLE iceberg_table (id bigint, data string, category string) PARTITIONED BY (category, bucket(16, id)) LOCATION 's3://amzn-s3-demo-bucket/your-folder/' TBLPROPERTIES ( 'table_type' = 'ICEBERG' )

Tabel berikut menunjukkan fungsi transformasi partisi yang tersedia.

Fungsi Deskripsi Jenis yang didukung
year(ts) Partisi menurut tahun date, timestamp
month(ts) Partisi berdasarkan bulan date, timestamp
day(ts) Partisi berdasarkan hari date, timestamp
hour(ts) Partisi per jam timestamp
bucket(N, col) Partisi dengan mod nilai hash N ember. Ini adalah konsep yang sama dengan hash bucketing untuk tabel Hive. int, long, decimal, date, timestamp, string, binary
truncate(L, col) Partisi dengan nilai terpotong menjadi L int, long, decimal, string

Athena mendukung partisi tersembunyi Iceberg. Untuk informasi selengkapnya, lihat partisi tersembunyi Iceberg dalam dokumentasi Apache Iceberg.

Bagian ini menjelaskan properti tabel yang dapat Anda tentukan sebagai pasangan kunci-nilai dalam TBLPROPERTIES klausa pernyataan. CREATE TABLE Athena hanya mengizinkan daftar pasangan kunci-nilai yang telah ditentukan dalam properti tabel untuk membuat atau mengubah tabel Iceberg. Tabel berikut menunjukkan properti tabel yang dapat Anda tentukan. Untuk informasi selengkapnya tentang opsi pemadatan, lihat Optimalkan tabel Iceberg di dokumentasi ini. Jika Anda ingin Athena mendukung properti konfigurasi tabel open source tertentu, kirim umpan balik ke athena-feedback@amazon.com.

format

Deskripsi Format data file
Nilai properti yang diizinkan Format file yang didukung dan kombinasi kompresi bervariasi menurut versi mesin Athena. Untuk informasi selengkapnya, lihat Gunakan kompresi tabel Iceberg.
Nilai default parquet

write_compression

Deskripsi Codec kompresi file
Nilai properti yang diizinkan Format file yang didukung dan kombinasi kompresi bervariasi menurut versi mesin Athena. Untuk informasi selengkapnya, lihat Gunakan kompresi tabel Iceberg.
Nilai default

Kompresi tulis default bervariasi menurut versi mesin Athena. Untuk informasi selengkapnya, lihat Gunakan kompresi tabel Iceberg.

optimize_rewrite_data_file_threshold

Deskripsi Konfigurasi spesifik pengoptimalan data. Jika ada lebih sedikit file data yang memerlukan optimasi daripada ambang batas yang diberikan, file tidak ditulis ulang. Hal ini memungkinkan akumulasi lebih banyak file data untuk menghasilkan file yang lebih dekat dengan ukuran target dan melewatkan perhitungan yang tidak perlu untuk menghemat biaya.
Nilai properti yang diizinkan Bilangan positif Harus kurang dari 50.
Nilai default 5

optimize_rewrite_delete_file_threshold

Deskripsi Konfigurasi spesifik pengoptimalan data. Jika ada lebih sedikit file hapus yang terkait dengan file data daripada ambang batas, file data tidak ditulis ulang. Ini memungkinkan akumulasi lebih banyak file hapus untuk setiap file data untuk menghemat biaya.
Nilai properti yang diizinkan Bilangan positif Harus kurang dari 50.
Nilai default 2

vacuum_min_snapshots_to_keep

Deskripsi

Jumlah minimum snapshot untuk disimpan di cabang utama tabel.

Nilai ini lebih diutamakan daripada properti. vacuum_max_snapshot_age_seconds Jika snapshot minimum yang tersisa lebih tua dari usia yang ditentukan olehvacuum_max_snapshot_age_seconds, snapshot disimpan, dan nilai diabaikanvacuum_max_snapshot_age_seconds.

Nilai properti yang diizinkan Bilangan positif
Nilai default 1

vacuum_max_snapshot_age_seconds

Deskripsi Usia maksimum snapshot untuk dipertahankan di cabang utama. Nilai ini diabaikan jika sisa minimum snapshot yang ditentukan oleh vacuum_min_snapshots_to_keep lebih tua dari usia yang ditentukan. Properti perilaku tabel ini sesuai dengan history.expire.max-snapshot-age-ms properti dalam konfigurasi Apache Iceberg.
Nilai properti yang diizinkan Bilangan positif
Nilai default 432000 detik (5 hari)

vacuum_max_metadata_files_to_keep

Deskripsi Jumlah maksimum file metadata sebelumnya untuk disimpan di cabang utama tabel.
Nilai properti yang diizinkan Bilangan positif
Nilai default 100

Contoh CREATE TABLE pernyataan

Contoh berikut membuat tabel Iceberg yang memiliki tiga kolom.

CREATE TABLE iceberg_table ( id int, data string, category string) PARTITIONED BY (category, bucket(16,id)) LOCATION 's3://amzn-s3-demo-bucket/iceberg-folder' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )

Gunakan CREATE TABLE AS SELECT (CTAS)

Untuk informasi tentang membuat tabel Gunung Es menggunakan CREATE TABLE AS pernyataan, lihatCREATE TABLE AS, dengan perhatian khusus pada bagian tersebutCTASproperti tabel.

Gunakan AWS Glue crawler

Anda dapat menggunakan AWS Glue crawler untuk secara otomatis mendaftarkan tabel Iceberg Anda ke dalam. AWS Glue Data Catalog Jika Anda ingin bermigrasi dari katalog Iceberg lain, Anda dapat membuat dan menjadwalkan AWS Glue crawler dan menyediakan jalur Amazon S3 tempat tabel Iceberg berada. Anda dapat menentukan kedalaman maksimum jalur Amazon S3 yang dapat dilalui AWS Glue crawler. Setelah Anda menjadwalkan AWS Glue crawler, crawler mengekstrak informasi skema dan memperbarui AWS Glue Data Catalog dengan perubahan skema setiap kali dijalankan. AWS Glue Crawler mendukung penggabungan skema di seluruh snapshot dan memperbarui lokasi file metadata terbaru di file. AWS Glue Data Catalog Untuk informasi selengkapnya, lihat Katalog Data dan crawler di AWS Glue.