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 CREATE TABLE AS (CTAS) untuk mengeluarkan data dalam format selain CSV, pernyataan CTAS memerlukan pembuatan tabel di Athena. UNLOADPernyataan ini berguna ketika Anda ingin menampilkan hasil SELECT kueri dalam format non-CSV tetapi tidak ingin 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 —
UNLOADhasilnya ditulis ke beberapa file secara paralel. JikaSELECTkueri dalamUNLOADpernyataan 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 INTOpernyataan. -
Partisi maksimum — Jumlah maksimum partisi yang dapat digunakan
UNLOADadalah 100. -
File metadata dan manifes — Athena menghasilkan file metadata dan file manifes data untuk setiap kueri.
UNLOADManifest 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
UNLOADoutput dienkripsi sesuai dengan konfigurasi enkripsi yang digunakan untuk Amazon S3. Untuk mengatur konfigurasi enkripsi untuk mengenkripsiUNLOADhasil Anda, Anda dapat menggunakan EncryptionConfiguration API. -
Pernyataan yang disiapkan -
UNLOADdapat digunakan dengan pernyataan yang disiapkan. Untuk informasi tentang pernyataan yang disiapkan di Athena, lihat. Gunakan kueri berparameter -
Kuota layanan -
UNLOADmenggunakan 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.
UNLOADSetelan 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
UNLOADPernyataan ini menggunakan sintaks berikut.
UNLOAD (SELECTcol_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
Nilai yang mungkin untuk property_name adalah sebagai berikut.
- format = '
file_format' -
Wajib. Menentukan format file output. Nilai yang mungkin untuk
file_formatadalahORCPARQUET,AVRO,JSON, atauTEXTFILE. - kompresi = '
compression_format' -
Tidak wajib. Opsi ini khusus untuk format ORC dan Parket. Untuk ORC, defaultnya adalah
zlib, dan untuk Parket, defaultnya adalah.gzipUntuk informasi tentang format kompresi yang didukung, lihat Dukungan kompresi Athena.catatan
Opsi ini tidak berlaku untuk
AVROformat. Athena menggunakangzipuntukJSONdanTEXTFILEformat. - kompresi_level =
compression_level -
Tidak wajib. Tingkat kompresi yang digunakan untuk kompresi ZSTD. Properti ini hanya berlaku untuk kompresi ZSTD. Untuk informasi selengkapnya, lihat Gunakan tingkat kompresi ZSTD.
- field_delimiter = ''
delimiter -
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
SELECTpernyataan 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 format JSON.
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, kompresi ZSTD, dan tingkat kompresi ZSTD 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 ETL dan ML Anda menggunakan fitur Amazon Athena UNLOAD
di Big Data Blog.AWS