

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan kompresi di Athena
<a name="compression-formats"></a>

Athena mendukung berbagai format kompresi untuk membaca dan menulis data, termasuk membaca dari tabel yang menggunakan berbagai format kompresi. Misalnya, Athena dapat berhasil membaca data dalam tabel yang menggunakan format file Parquet ketika beberapa file Parquet dikompresi dengan Snappy dan file Parquet lainnya dikompresi dengan GZIP. Prinsip yang sama berlaku untuk format penyimpanan ORC, file teks, dan JSON.

## Format kompresi yang didukung
<a name="compression-support-formats"></a>

Athena mendukung format kompresi berikut:
+ **BZIP2**— Format yang menggunakan algoritma Burrows-Wheeler.
+ **DEFLATE** [— Algoritma kompresi berdasarkan pengkodean [LZSS](https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Storer%E2%80%93Szymanski) dan Huffman.](https://en.wikipedia.org/wiki/Huffman_coding) [Deflate](https://en.wikipedia.org/wiki/Deflate) hanya relevan untuk format file Avro.
+ **GZIP** — Algoritma kompresi berdasarkan Deflate. Untuk tabel Hive di mesin Athena versi 2 dan 3, dan tabel Iceberg di mesin Athena versi 2, GZIP adalah format kompresi tulis default untuk file dalam format penyimpanan file Parket dan teks. File dalam `tar.gz` format tidak didukung.
+ **LZ4**— Anggota keluarga Lempel-Ziv 77 (LZ7) ini juga berfokus pada kecepatan kompresi dan dekompresi daripada kompresi data maksimum. LZ4 memiliki format pembingkaian berikut:
  + **LZ4 Raw/Unframed** — Implementasi standar format kompresi blok yang tidak dibingkai. LZ4 Untuk informasi selengkapnya, lihat [deskripsi format LZ4 blok](https://github.com/lz4/lz4/blob/dev/doc/lz4_Block_format.md) pada GitHub.
  + **LZ4 framed** — Implementasi pembingkaian yang biasa dari. LZ4 Untuk informasi selengkapnya, lihat [deskripsi format LZ4 bingkai](https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md) di GitHub.
  + **LZ4 Hadoop-compatible** — Implementasi Apache Hadoop dari. LZ4 Implementasi ini membungkus LZ4 kompresi dengan [BlockCompressorStreamkelas.java.](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java)
+ **LZO** — Format yang menggunakan algoritma Lempel—Ziv-Oberhumer, yang berfokus pada kompresi tinggi dan kecepatan dekompresi daripada kompresi maksimum data. LZO memiliki dua implementasi:
  + **LZO Standar** — Untuk informasi lebih lanjut, lihat [abstrak](http://www.oberhumer.com/opensource/lzo/#abstract) LZO di situs web Oberhumer.
  + **LZO hadoop-compatible** [— Implementasi ini membungkus algoritma LZO dengan kelas.java. BlockCompressorStream](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java)
+ **SNAPPY** — Algoritma kompresi yang merupakan bagian dari keluarga Lempel-Ziv 77 (). LZ7 Snappy berfokus pada kecepatan kompresi dan dekompresi yang tinggi daripada kompresi maksimum data.
+ **ZLIB** — Berdasarkan Defrate, ZLIB adalah format kompresi tulis default untuk file dalam format penyimpanan data ORC. Untuk informasi lebih lanjut, lihat halaman [zlib](https://github.com/madler/zlib) di. GitHub
+  **ZSTD** — [Algoritma kompresi data real-time Zstandard adalah algoritma kompresi](http://facebook.github.io/zstd/) cepat yang memberikan rasio kompresi tinggi. Pustaka Zstandard (ZSTD) disediakan sebagai perangkat lunak sumber terbuka menggunakan lisensi BSD. ZSTD adalah kompresi default untuk tabel Iceberg. Saat menulis data terkompresi ZSTD, Athena menggunakan kompresi ZSTD level 3 secara default. Untuk informasi lebih lanjut tentang menggunakan tingkat kompresi ZSTD di Athena, lihat. [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md)

**catatan**  
Athena tidak mendukung penulisan file Parket yang dikompresi dengan LZ4 atau format LZO. Bacaan untuk format kompresi ini didukung.

## Tentukan format kompresi
<a name="compression-support-specifying-compression-formats"></a>

Saat Anda menulis pernyataan CREATE TABLE atau CTAS, Anda dapat menentukan properti kompresi yang menentukan jenis kompresi yang akan digunakan saat Athena menulis ke tabel tersebut.
+ Untuk CTAS, lihat[Properti tabel CTAS](create-table-as.md#ctas-table-properties). Sebagai contoh, lihat [Contoh kueri CTAS](ctas-examples.md).
+ Untuk CREATE TABLE, lihat [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md) daftar properti tabel kompresi.

## Tentukan tidak ada kompresi
<a name="compression-support-specifying-no-compression"></a>

Pernyataan CREATE TABLE mendukung penulisan file yang tidak terkompresi. Untuk menulis file yang tidak terkompresi, gunakan sintaks berikut: 
+ BUAT TABEL (file teks atau JSON) - Dalam`TBLPROPERTIES`, tentukan`write.compression = NONE`.
+ BUAT TABEL (Parket) — Dalam`TBLPROPERTIES`, tentukan`parquet.compression = UNCOMPRESSED`.
+ BUAT TABEL (ORC) - Dalam`TBLPROPERTIES`, tentukan`orc.compress = NONE`.

## Catatan dan sumber daya
<a name="compression-support-notes-and-resources"></a>
+ Saat ini, ekstensi file huruf besar seperti `.GZ` atau tidak dikenali `.BZIP2` oleh Athena. Hindari menggunakan kumpulan data dengan ekstensi file huruf besar, atau ganti nama ekstensi file data menjadi huruf kecil.
+ Untuk data dalam CSV, TSV, dan JSON, Athena menentukan jenis kompresi dari ekstensi file. Jika tidak ada ekstensi file, Athena memperlakukan data sebagai teks biasa yang tidak terkompresi. Jika data Anda dikompresi, pastikan nama file menyertakan ekstensi kompresi, seperti`gz`.
+ Format file ZIP tidak didukung.
+ Untuk menanyakan log Amazon Data Firehose dari Athena, format yang didukung mencakup kompresi GZIP atau file ORC dengan kompresi SNAPPY.
+ Untuk informasi selengkapnya tentang penggunaan kompresi, lihat bagian 3 (“Kompres dan pisahkan file”) dari posting Blog AWS Big Data [10 kiat penyetelan kinerja teratas untuk Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).

**Topics**
+ [Tentukan format kompresi](#compression-support-specifying-compression-formats)
+ [Tentukan tidak ada kompresi](#compression-support-specifying-no-compression)
+ [Catatan dan sumber daya](#compression-support-notes-and-resources)
+ [Kompresi meja sarang](compression-support-hive.md)
+ [Kompresi tabel gunung es](compression-support-iceberg.md)
+ [Tingkat kompresi ZSTD](compression-support-zstd-levels.md)

# Gunakan kompresi tabel Hive
<a name="compression-support-hive"></a>

Opsi kompresi untuk tabel Hive di Athena bervariasi menurut versi mesin dan format file.

## Dukungan kompresi sarang di mesin Athena versi 3
<a name="compression-support-hive-v3"></a>

Tabel berikut merangkum dukungan format kompresi di mesin Athena versi 3 untuk format file penyimpanan di Apache Hive. Format file teks termasuk TSV, CSV, JSON, dan kustom SerDes untuk teks. “Ya” atau “Tidak” dalam sel berlaku sama untuk membaca dan menulis operasi kecuali jika dicatat. Untuk keperluan tabel ini, CREATE TABLE, CTAS, dan INSERT INTO dianggap sebagai operasi tulis. Untuk informasi lebih lanjut tentang menggunakan tingkat kompresi ZSTD di Athena, lihat. [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md)


****  

|  | Avro | Ion | ORC | Parquet | File teks | 
| --- | --- | --- | --- | --- | --- | 
| BZIP2 | Ya | Ya | Tidak | Tidak | Ya | 
| DEFLATE | Ya | Tidak | Tidak | Tidak | Tidak | 
| GZIP | Tidak | Ya | Tidak | Ya | Ya | 
| LZ4 | Tidak | Ya | Ya |  Tulis - Tidak Baca - Ya  | Ya | 
| LZO | Tidak |  Tulis - Tidak Baca - Ya  | Tidak |  Tulis - Tidak Baca - Ya  |  Tulis - Tidak Baca - Ya  | 
| SNAPPY | Ya | Ya | Ya | Ya | Ya | 
| ZLIB | Tidak | Tidak | Ya | Tidak | Tidak | 
| ZSTD | Ya | Ya | Ya | Ya | Ya | 
| NONE | Ya | Ya | Ya | Ya | Ya | 

# Gunakan kompresi tabel Iceberg
<a name="compression-support-iceberg"></a>

Opsi kompresi untuk tabel Iceberg di Athena bervariasi menurut versi mesin dan format file.

## Dukungan kompresi gunung es di mesin Athena versi 3
<a name="compression-support-iceberg-v3"></a>

Tabel berikut merangkum dukungan format kompresi di mesin Athena versi 3 untuk format file penyimpanan di Apache Iceberg. “Ya” atau “Tidak” dalam sel berlaku sama untuk membaca dan menulis operasi kecuali jika dicatat. Untuk keperluan tabel ini, CREATE TABLE, CTAS, dan INSERT INTO dianggap sebagai operasi tulis. Format penyimpanan default untuk Iceberg di mesin Athena versi 3 adalah Parket. Format kompresi default untuk Iceberg di mesin Athena versi 3 adalah ZSTD. Untuk informasi lebih lanjut tentang menggunakan tingkat kompresi ZSTD di Athena, lihat. [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md)


****  

|  | Avro | ORC | Parket (default) | 
| --- | --- | --- | --- | 
| BZIP2 | Tidak | Tidak | Tidak | 
| GZIP | Ya | Tidak | Ya | 
| LZ4 | Tidak | Ya | Tidak | 
| SNAPPY | Ya | Ya | Ya | 
| ZLIB | Tidak | Ya | Tidak | 
| ZSTD | Ya | Ya | Ya (default) | 
| NONE | Ya (tentukan None atauDeflate) | Ya | Ya (tentukan None atauUncompressed) | 

# Gunakan tingkat kompresi ZSTD
<a name="compression-support-zstd-levels"></a>

[Algoritma kompresi data real-time Zstandard adalah algoritma](http://facebook.github.io/zstd/) kompresi cepat yang memberikan rasio kompresi tinggi. Perpustakaan Zstandard (ZSTD) adalah perangkat lunak open source dan menggunakan lisensi BSD. Athena mendukung membaca dan menulis data file ORC, Parket, dan teks terkompresi ZSTD.

Anda dapat menggunakan tingkat kompresi ZSTD untuk menyesuaikan rasio kompresi dan kecepatan sesuai dengan kebutuhan Anda. Pustaka ZSTD mendukung tingkat kompresi dari 1 hingga 22. Athena menggunakan kompresi ZSTD level 3 secara default.

Tingkat kompresi memberikan trade-off granular antara kecepatan kompresi dan jumlah kompresi yang dicapai. Tingkat kompresi yang lebih rendah memberikan kecepatan yang lebih cepat tetapi ukuran file yang lebih besar. Misalnya, Anda dapat menggunakan level 1 jika kecepatan paling penting dan level 22 jika ukuran paling penting. Level 3 cocok untuk banyak kasus penggunaan dan merupakan default. Gunakan level yang lebih besar dari 19 dengan hati-hati karena membutuhkan lebih banyak memori. Pustaka ZSTD juga menawarkan tingkat kompresi negatif yang memperluas jangkauan kecepatan dan rasio kompresi. Untuk informasi lebih lanjut, lihat [Zstandard Compression RFC](https://datatracker.ietf.org/doc/html/rfc8478).

Kelimpahan tingkat kompresi menawarkan peluang besar untuk fine tuning. Namun, pastikan Anda mengukur data Anda dan mempertimbangkan pengorbanan saat memutuskan tingkat kompresi. Sebaiknya gunakan level default 3 atau level dalam kisaran 6 hingga 9 untuk pertukaran yang wajar antara kecepatan kompresi dan ukuran data terkompresi. Tingkat cadangan 20 dan lebih besar untuk kasus di mana ukuran paling penting dan kecepatan kompresi tidak menjadi perhatian.

## Pertimbangan dan batasan
<a name="compression-support-zstd-levels-considerations-and-limitations"></a>

Saat menggunakan tingkat kompresi ZSTD di Athena, pertimbangkan hal-hal berikut.
+ `compression_level`Properti ZSTD hanya didukung di mesin Athena versi 3.
+ `compression_level`Properti ZSTD didukung untuk`ALTER TABLE`,, `CREATE TABLE AS` (CTAS)`CREATE TABLE`, dan pernyataan. `UNLOAD`
+ `compression_level`Properti ini opsional.
+ `compression_level`Properti ini didukung hanya untuk kompresi ZSTD.
+ Tingkat kompresi yang mungkin adalah 1 hingga 22.
+ Tingkat kompresi default adalah 3.

Untuk informasi tentang dukungan kompresi Apache Hive ZSTD di Athena, lihat. [Gunakan kompresi tabel Hive](compression-support-hive.md) Untuk informasi tentang dukungan kompresi Apache Iceberg ZSTD di Athena, lihat. [Gunakan kompresi tabel Iceberg](compression-support-iceberg.md)

## Tentukan tingkat kompresi ZSTD
<a name="compression-support-zstd-levels-specifying"></a>

Untuk menentukan tingkat kompresi ZSTD untuk`ALTER TABLE`,, `CREATE TABLE``CREATE TABLE AS`, dan `UNLOAD` pernyataan, gunakan properti. `compression_level` Untuk menentukan kompresi ZSTD itu sendiri, Anda harus menggunakan properti kompresi individual yang digunakan sintaks untuk pernyataan tersebut.

### MENGUBAH TABEL SET TBLPROPERTIES
<a name="compression-support-zstd-levels-alter-table"></a>

Dalam `SET TBLPROPERTIES` klausa [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md) pernyataan, tentukan kompresi ZSTD menggunakan atau. `'write.compression' = ' ZSTD'` `'parquet.compression' = 'ZSTD'` Kemudian gunakan `compression_level` properti untuk menentukan nilai dari 1 hingga 22 (misalnya, '`compression_level' = '5'`). Jika Anda tidak menentukan properti tingkat kompresi, tingkat kompresi default ke 3.

#### Contoh
<a name="compression-support-zstd-levels-alter-table-example"></a>

Contoh berikut memodifikasi tabel `existing_table` untuk menggunakan format file Parket dengan kompresi ZSTD dan tingkat kompresi ZSTD 4. Perhatikan bahwa dalam `TBLPROPERTIES` klausa nilai tingkat kompresi harus dimasukkan sebagai string bukan bilangan bulat dan oleh karena itu harus diapit dalam tanda kutip tunggal atau ganda.

```
ALTER TABLE existing_table 
SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
```

### CREATE TABLE
<a name="compression-support-zstd-levels-create-table"></a>

Dalam `TBLPROPERTIES` klausa [CREATE TABLE](create-table.md) pernyataan, tentukan '`write.compression' = 'ZSTD'`atau`'parquet.compression' = 'ZSTD'`, lalu gunakan `compression_level = compression_level` dan tentukan nilai dari 1 hingga 22 sebagai string. Jika `compression_level` properti tidak ditentukan, tingkat kompresi default adalah 3.

#### Contoh
<a name="compression-support-zstd-levels-create-table-example"></a>

Contoh berikut membuat tabel dalam format file Parket menggunakan kompresi ZSTD dan tingkat kompresi ZSTD 4. 

```
CREATE EXTERNAL TABLE new_table ( 
  `col0` string COMMENT '', 
  `col1` string COMMENT '' 
) 
STORED AS PARQUET 
LOCATION 's3://amzn-s3-demo-bucket/' 
TBLPROPERTIES ('write.compression' = 'ZSTD', 'compression_level' = '4')
```

### BUAT TABEL SEBAGAI (CTAS)
<a name="compression-support-zstd-levels-ctas"></a>

Dalam `WITH` klausa [CREATE TABLE AS](create-table-as.md) pernyataan, tentukan`write_compression = 'ZSTD'`, atau`parquet_compression = 'ZSTD'`, lalu gunakan `compression_level = compression_level` dan tentukan nilai dari 1 hingga 22 sebagai bilangan bulat. Jika `compression_level` properti tidak ditentukan, tingkat kompresi default adalah 3.

#### Contoh
<a name="compression-support-zstd-levels-ctas-example"></a>

Contoh CTAS berikut menentukan Parket sebagai format file menggunakan kompresi ZSTD dengan tingkat kompresi 4. Perhatikan bahwa, dalam `WITH` klausa, nilai untuk tingkat kompresi harus ditentukan sebagai bilangan bulat, bukan sebagai string.

```
CREATE TABLE new_table  
WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4)  
AS SELECT * FROM old_table
```

### MEMBONGKAR
<a name="compression-support-zstd-levels-unload"></a>

Dalam `WITH` klausa [MEMBONGKAR](unload.md) pernyataan, tentukan`compression = 'ZSTD'`, lalu gunakan `compression_level = compression_level` dan tentukan nilai dari 1 hingga 22 sebagai bilangan bulat. Jika `compression_level` properti tidak ditentukan, tingkat kompresi default adalah 3.

#### Contoh
<a name="compression-support-zstd-levels-unload-example"></a>

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)
```