MEMBONGKAR - Amazon Athena

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. UNLOADPernyataan 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 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 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 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. 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

UNLOADPernyataan ini menggunakan sintaks berikut.

UNLOAD (SELECT col_name[, ...] FROM old_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,,, PARQUETAVRO, JSON atau. TEXTFILE

kompresi = 'compression_format'

Tidak wajib. Opsi ini khusus untuk format ORC dan Parket. Untuk ORC, defaultnya adalahzlib, 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 menggunakan gzip untuk JSON dan TEXTFILE 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