Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
UNLOAD
Menulis hasil kueri dari SELECT
pernyataan ke format data yang ditentukan. Format yang didukung untuk UNLOAD
termasuk Apache Parquet,, Apache AvroORC, dan. JSON CSVadalah satu-satunya format output yang didukung oleh SELECT
perintah Athena, tetapi Anda dapat menggunakan UNLOAD
perintah, yang mendukung berbagai format output, untuk melampirkan SELECT
kueri Anda dan menulis ulang outputnya ke salah satu format yang mendukung. UNLOAD
Meskipun Anda dapat menggunakan pernyataan CREATE TABLE AS
(CTAS) untuk mengeluarkan data dalam format selainCSV, CTAS pernyataan memerlukan pembuatan tabel di Athena. UNLOAD
Pernyataan ini berguna ketika Anda ingin menampilkan hasil SELECT
kueri dalam CSV non-format tetapi tidak ingin tabel terkait. Misalnya, aplikasi hilir mungkin memerlukan hasil SELECT
kueri dalam JSON format, dan Parket atau ORC mungkin memberikan keuntungan kinerja CSV jika Anda berniat menggunakan hasil SELECT
kueri untuk analisis tambahan.
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 untuk 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 Identifikasi 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. Gunakan kueri berparameter -
Kuota layanan -
UNLOAD
menggunakan DML kuota kueri. 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 Tentukan lokasi hasil kueri menggunakan konsol Athena.
Sintaks
UNLOAD
Pernyataan ini menggunakan sintaks berikut.
UNLOAD (SELECT
col_name
[, ...] FROMold_table
) TO 's3://amzn-s3-demo-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
Kemungkinan nilai untuk property_name
adalah sebagai berikut.
- format = '
file_format
' -
Wajib. Menentukan format file output. Kemungkinan nilai untuk
file_format
adalahORC
,PARQUET
,AVRO
,JSON
, atauTEXTFILE
. - kompresi = '
compression_format
' -
Tidak wajib. Opsi ini khusus untuk format ORC dan Parket. UntukORC, defaultnya adalah
zlib
, dan untuk Parket, defaultnya adalahgzip
. Untuk informasi tentang format kompresi yang didukung, lihat Dukungan kompresi Athena.catatan
Opsi ini tidak berlaku untuk
AVRO
format. Athena menggunakangzip
untukJSON
danTEXTFILE
format. - kompresi_level =
compression_level
-
Tidak wajib. Tingkat kompresi yang digunakan untuk ZSTD kompresi. Properti ini hanya berlaku untuk ZSTD kompresi. Untuk informasi selengkapnya, lihat Gunakan tingkat ZSTD kompresi.
- field_delimiter = '
delimiter
' -
Tidak wajib. Menentukan pembatas bidang karakter tunggal untuk file dalamCSV,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. - dipartisikan_oleh = [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://amzn-s3-demo-bucket/unload_test_1/
menggunakan JSON format.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-bucket/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])
Contoh berikut membongkar hasil query ke lokasi yang ditentukan menggunakan format file Parquet, ZSTD kompresi, dan tingkat ZSTD kompresi 4.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
Sumber daya tambahan
-
Sederhanakan pipeline Anda ETL dan ML menggunakan fitur Amazon UNLOAD Athena
di Big Data Blog AWS .