UNLOAD - Amazon Athena

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 CTAS pernyataan untuk mengeluarkan data dalam format selainCSV, pernyataan tersebut juga memerlukan pembuatan tabel di Athena. UNLOADPernyataan ini berguna ketika Anda ingin menampilkan hasil SELECT kueri dalam CSV non-format tetapi tidak memerlukan 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 fileUNLOAD hasilnya ditulis ke beberapa file secara paralel. Jika SELECT kueri dalam UNLOAD 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 mengenkripsi UNLOAD 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

UNLOADPernyataan ini menggunakan sintaks berikut.

UNLOAD (SELECT col_name[, ...] FROM old_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 adalahzlib, 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 menggunakan gzip untuk JSON dan TEXTFILE 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