Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
MEMBONGKAR
Menulis hasil kueri dari SELECT
pernyataan ke format data yang ditentukan. Format yang didukung untuk UNLOAD
termasuk Apache Parquet, ORC, Apache Avro, dan JSON. CSV adalah satu-satunya format output yang didukung oleh perintah SELECT
Athena, tetapi Anda dapat menggunakan UNLOAD
perintah, yang mendukung berbagai format output, untuk melampirkan kueri SELECT
Anda dan menulis ulang outputnya ke salah satu format yang mendukung. UNLOAD
Meskipun Anda dapat menggunakan pernyataan CTAS untuk mengeluarkan data dalam format selain CSV, pernyataan tersebut juga memerlukan pembuatan tabel di Athena. UNLOAD
Pernyataan ini berguna ketika Anda ingin menampilkan hasil SELECT
kueri dalam format non-CSV tetapi tidak memerlukan tabel terkait. Misalnya, aplikasi hilir mungkin memerlukan hasil SELECT
kueri dalam format JSON, dan Parquet atau ORC mungkin memberikan keunggulan kinerja dibandingkan CSV jika Anda bermaksud menggunakan hasil kueri untuk analisis tambahan. SELECT
Pertimbangan dan batasan
Saat Anda menggunakan UNLOAD
pernyataan di Athena, ingatlah poin-poin berikut:
-
Tidak ada urutan global file —
UNLOAD
hasilnya ditulis ke beberapa file secara paralel. JikaSELECT
kueri dalamUNLOAD
pernyataan menentukan urutan pengurutan, isi setiap file dalam urutan diurutkan, tetapi file tidak diurutkan relatif satu sama lain. -
Data yatim piatu tidak dihapus — Jika terjadi kegagalan, Athena tidak berusaha menghapus data yatim piatu. Perilaku ini sama dengan CTAS dan
INSERT INTO
pernyataan. -
Partisi maksimum — Jumlah maksimum partisi yang dapat digunakan
UNLOAD
adalah 100. -
File metadata dan manifes — Athena menghasilkan file metadata dan file manifes data untuk setiap kueri.
UNLOAD
Manifest melacak file yang kueri menulis. Kedua file disimpan ke lokasi hasil kueri Athena Anda di Amazon S3. Untuk informasi selengkapnya, lihat Mengidentifikasi file keluaran kueri. -
Enkripsi — file
UNLOAD
output dienkripsi sesuai dengan konfigurasi enkripsi yang digunakan untuk Amazon S3. Untuk mengatur konfigurasi enkripsi untuk mengenkripsiUNLOAD
hasil Anda, Anda dapat menggunakan EncryptionConfiguration API. -
Pernyataan yang disiapkan -
UNLOAD
dapat digunakan dengan pernyataan yang disiapkan. Untuk informasi tentang pernyataan yang disiapkan di Athena, lihat. Menggunakan kueri berparameter -
Kuota layanan - UNLOAD menggunakan kuota kueri DML. Untuk informasi kuota, lihatService Quotas.
-
Pemilik bucket yang diharapkan — Pengaturan pemilik bucket yang diharapkan tidak berlaku untuk lokasi Amazon S3 tujuan yang ditentukan dalam kueri.
UNLOAD
Setelan pemilik bucket yang diharapkan hanya berlaku untuk lokasi keluaran Amazon S3 yang Anda tentukan untuk hasil kueri Athena. Untuk informasi selengkapnya, lihat Menentukan lokasi hasil kueri menggunakan konsol Athena.
Sintaks
UNLOAD
Pernyataan ini menggunakan sintaks berikut.
UNLOAD (SELECT
col_name
[, ...] FROMold_table
) TO 's3://DOC-EXAMPLE-BUCKET/my_folder
/' WITH (property_name
= 'expression
' [, ...] )
Kecuali saat menulis ke partisi, TO
tujuan harus menentukan lokasi di Amazon S3 yang tidak memiliki data. Sebelum UNLOAD
kueri menulis ke lokasi yang ditentukan, kueri memverifikasi bahwa lokasi bucket kosong. Karena UNLOAD
tidak menulis data ke lokasi yang ditentukan jika lokasi sudah memiliki data di dalamnya, UNLOAD
tidak menimpa data yang ada. Untuk menggunakan kembali lokasi bucket sebagai tujuanUNLOAD
, hapus data di lokasi bucket, lalu jalankan kueri lagi.
Perhatikan bahwa ketika UNLOAD
menulis ke partisi, perilaku ini berbeda. Jika Anda menjalankan UNLOAD
kueri yang sama beberapa kali yang memiliki SELECT
pernyataan yang sama, TO
lokasi yang sama, dan partisi yang sama, setiap UNLOAD
kueri akan membongkar data ke Amazon S3 di lokasi dan partisi yang ditentukan.
Parameter
Nilai yang mungkin untuk property_name
adalah sebagai berikut.
- format = '
file_format
' -
Wajib. Menentukan format file output. Nilai yang mungkin untuk
file_format
adalahORC
,,,PARQUET
AVRO
,JSON
atau.TEXTFILE
- kompresi = '
compression_format
' -
Tidak wajib. Opsi ini khusus untuk format ORC dan Parket. Untuk ORC, defaultnya adalah
zlib
, dan untuk Parket, defaultnya adalah.gzip
Untuk informasi tentang format kompresi yang didukung, lihat Dukungan kompresi Athena.catatan
Opsi ini tidak berlaku untuk
AVRO
format. Athena menggunakangzip
untukJSON
danTEXTFILE
format. compression_level = compression_level
-
Tidak wajib. Tingkat kompresi yang digunakan untuk kompresi ZSTD. Properti ini hanya berlaku untuk kompresi ZSTD. Untuk informasi selengkapnya, lihat Menggunakan tingkat kompresi ZSTD di Athena.
-
field_delimiter = 'pembatas'
-
Tidak wajib. Menentukan pembatas bidang karakter tunggal untuk file dalam CSV, TSV, dan format teks lainnya. Contoh berikut menentukan pembatas koma.
WITH (field_delimiter = ',')
Saat ini, pembatas bidang multikarakter tidak didukung. Jika Anda tidak menentukan pembatas bidang, karakter oktal
\001
(^A) digunakan. - partitioned_by = ARRAY [
col_name
[,...]] -
Tidak wajib. Daftar array kolom dimana output dipartisi.
catatan
Dalam
SELECT
pernyataan Anda, pastikan bahwa nama-nama kolom yang dipartisi terakhir dalam daftar kolom Anda.
Contoh
Contoh berikut menulis output dari SELECT
query ke lokasi Amazon S3 s3://DOC-EXAMPLE-BUCKET/unload_test_1/
menggunakan format JSON.
UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/unload_test_1/' WITH (format = 'JSON')
Contoh berikut menulis output dari SELECT
query dalam format Parquet menggunakan kompresi Snappy.
UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET',compression = 'SNAPPY')
Contoh berikut menulis empat kolom dalam format teks, dengan output dipartisi oleh kolom terakhir.
UNLOAD (SELECT name1, address1, comment1, key1 FROM table1) TO 's3://DOC-EXAMPLE-BUCKET/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])
Contoh berikut membongkar hasil query ke lokasi yang ditentukan menggunakan format file Parquet, kompresi ZSTD, dan tingkat kompresi ZSTD 4.
UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
Sumber daya tambahan
-
Sederhanakan pipeline ETL dan ML Anda menggunakan fitur Amazon Athena UNLOAD
di Big Data Blog.AWS