

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

# Partisi data Anda
<a name="partitions"></a>

Dengan mempartisi data, Anda dapat membatasi jumlah data yang dipindai oleh setiap kueri, sehingga meningkatkan performa dan mengurangi biaya. Anda dapat mempartisi data Anda dengan kunci apa pun. Sebuah praktik umum adalah untuk partisi data berdasarkan waktu, sering mengarah ke skema partisi multi-level. Misalnya, pelanggan yang memiliki data datang setiap jam mungkin memutuskan untuk mempartisi menurut tahun, bulan, tanggal, dan jam. Pelanggan lain, yang memiliki data yang berasal dari berbagai sumber tetapi yang dimuat hanya sekali per hari, mungkin dipartisi oleh pengenal sumber data dan tanggal.

Athena dapat menggunakan partisi gaya Apache Hive, yang jalur datanya berisi pasangan nilai kunci yang dihubungkan dengan tanda yang sama (misalnya, atau). `country=us/...` `year=2021/month=01/day=26/...` Dengan demikian, jalur mencakup nama kunci partisi dan nilai yang diwakili oleh setiap jalur. Untuk memuat partisi Hive baru ke dalam tabel yang dipartisi, Anda dapat menggunakan [MSCK REPAIR TABLE](msck-repair-table.md) perintah, yang hanya berfungsi dengan partisi gaya Hive.

Athena juga dapat menggunakan skema partisi gaya non-sarang. Misalnya, CloudTrail log dan aliran pengiriman Firehose menggunakan komponen jalur terpisah untuk bagian tanggal seperti. `data/2021/01/26/us/6fc7845e.json` Untuk partisi gaya non-sarang seperti itu, Anda gunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) untuk menambahkan partisi secara manual.

## Pertimbangan dan batasan
<a name="partitions-considerations-limitations"></a>

Saat menggunakan partisi, ingatlah hal-hal berikut:
+ Jika Anda mengkueri tabel dipartisi dan menentukan partisi di `WHERE`, Athena memindai data hanya dari partisi itu.
+ Jika Anda mengeluarkan kueri terhadap bucket Amazon S3 dengan begitu banyak objek dan data yang tidak dipartisi, kueri tersebut dapat memengaruhi batas tingkat permintaan `GET` di Amazon S3 dan menyebabkan pengecualian Amazon S3. Untuk mencegah kesalahan, partisi data Anda. Selain itu, pertimbangkan untuk menyetel tingkat permintaan Amazon S3 Anda. Untuk informasi selengkapnya, lihat [Pola desain praktik terbaik: Mengoptimalkan kinerja Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/request-rate-perf-considerations.html).
+ Lokasi partisi yang akan digunakan dengan Athena harus menggunakan protokol `s3` (misalnya, `s3://amzn-s3-demo-bucket/folder/`). Di Athena, lokasi yang menggunakan protokol lain (contohnya,`s3a://amzn-s3-demo-bucket/folder/`) akan mengakibatkan kegagalan permintaan ketika`MSCK REPAIR TABLE`query dijalankan pada tabel yang mengandung. 
+ Pastikan bahwa jalur Amazon S3 dalam huruf kecil bukan camel case (misalnya, `userid` sebagai gantinya `userId`). Jika jalur S3 dalam kasus unta,`MSCK REPAIR TABLE`tidak menambahkan partisi ke AWS Glue Data Catalog. Untuk informasi selengkapnya, lihat [MSCK REPAIR TABLE](msck-repair-table.md).
+ Karena `MSCK REPAIR TABLE` memindai folder dan subfoldernya untuk menemukan skema partisi yang cocok, pastikan untuk menyimpan data untuk tabel terpisah dalam hierarki folder terpisah. Misalnya, Anda memiliki data untuk tabel 1 in `s3://amzn-s3-demo-bucket1` dan data untuk tabel 2 in`s3://amzn-s3-demo-bucket1/table-2-data`. Jika kedua tabel dipartisi oleh string, `MSCK REPAIR TABLE` akan menambahkan partisi untuk tabel 2 ke tabel 1. Untuk menghindari hal ini, gunakan struktur folder terpisah seperti `s3://amzn-s3-demo-bucket1` dan `s3://amzn-s3-demo-bucket2` sebagai gantinya. Perhatikan bahwa perilaku ini konsisten dengan Amazon EMR dan Apache Hive.
+ Jika Anda menggunakan AWS Glue Data Catalog with Athena, lihat [AWS Glue titik akhir dan kuota untuk kuota](https://docs.aws.amazon.com/general/latest/gr/glue.html) layanan pada partisi per akun dan per tabel. 
  + Meskipun Athena mendukung AWS Glue tabel kueri yang memiliki 10 juta partisi, Athena tidak dapat membaca lebih dari 1 juta partisi dalam satu pemindaian. Dalam skenario seperti itu, pengindeksan partisi dapat bermanfaat. Untuk informasi selengkapnya, lihat artikel AWS Big Data Blog [Meningkatkan kinerja kueri Amazon Athena menggunakan indeks AWS Glue Data Catalog partisi](https://aws.amazon.com/blogs/big-data/improve-amazon-athena-query-performance-using-aws-glue-data-catalog-partition-indexes/).
+ Untuk meminta peningkatan kuota partisi jika Anda menggunakan AWS Glue Data Catalog, kunjungi konsol [Service Quotas](https://console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/glue/quotas) untuk. AWS Glue

## Membuat dan memuat tabel dengan data yang dipartisi
<a name="partitions-creating-loading"></a>

Untuk membuat tabel yang menggunakan partisi, gunakan `PARTITIONED BY` klausa dalam pernyataan Anda[CREATE TABLE](create-table.md). `PARTITIONED BY`Klausa mendefinisikan kunci untuk mempartisi data, seperti pada contoh berikut. `LOCATION`Klausa menentukan lokasi root dari data yang dipartisi.

```
CREATE EXTERNAL TABLE users (
first string,
last string,
username string
)
PARTITIONED BY (id string)
STORED AS parquet
LOCATION 's3://amzn-s3-demo-bucket'
```

Setelah Anda membuat tabel, Anda memuat data di partisi untuk kueri. Untuk partisi gaya Hive, Anda lari. [MSCK REPAIR TABLE](msck-repair-table.md) Untuk partisi gaya non-sarang, Anda gunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) untuk menambahkan partisi secara manual.

## Siapkan gaya Hive dan data gaya non-Hive untuk kueri
<a name="partitions-preparing-data"></a>

Bagian berikut menunjukkan bagaimana mempersiapkan gaya Hive dan data gaya non-Hive untuk query di Athena.

### Skenario 1: Data disimpan di Amazon S3 dalam format Hive
<a name="scenario-1-data-already-partitioned-and-stored-on-s3-in-hive-format"></a>

Dalam skenario ini, partisi disimpan dalam folder terpisah di Amazon S3. Misalnya, berikut adalah daftar sebagian untuk contoh tayangan iklan yang dihasilkan oleh [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html)perintah, yang mencantumkan objek S3 di bawah awalan yang ditentukan:

```
aws s3 ls s3://elasticmapreduce/samples/hive-ads/tables/impressions/

    PRE dt=2009-04-12-13-00/
    PRE dt=2009-04-12-13-05/
    PRE dt=2009-04-12-13-10/
    PRE dt=2009-04-12-13-15/
    PRE dt=2009-04-12-13-20/
    PRE dt=2009-04-12-14-00/
    PRE dt=2009-04-12-14-05/
    PRE dt=2009-04-12-14-10/
    PRE dt=2009-04-12-14-15/
    PRE dt=2009-04-12-14-20/
    PRE dt=2009-04-12-15-00/
    PRE dt=2009-04-12-15-05/
```

Di sini, log disimpan dengan nama kolom (dt) ditetapkan sama dengan tanggal, jam, dan kenaikan menit. Saat Anda memberikan DDL dengan lokasi folder induk, skema, dan nama kolom dipartisi, Athena dapat mengkueri data dalam subfolder tersebut.

#### Buat tabel
<a name="creating-a-table"></a>

Untuk membuat tabel dari data ini, buat partisi bersama 'dt' seperti pada pernyataan Athena DDL berikut:

```
CREATE EXTERNAL TABLE impressions (
    requestBeginTime string,
    adId string,
    impressionId string,
    referrer string,
    userAgent string,
    userCookie string,
    ip string,
    number string,
    processId string,
    browserCookie string,
    requestEndTime string,
    timers struct<modelLookup:string, requestTime:string>,
    threadId string,
    hostname string,
    sessionId string)
PARTITIONED BY (dt string)
ROW FORMAT  serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://elasticmapreduce/samples/hive-ads/tables/impressions/' ;
```

Tabel ini menggunakan Hive asli JSON serializer-deserializer untuk membaca data JSON yang disimpan di Amazon S3. Untuk informasi selengkapnya tentang format yang didukung, lihat [Pilih SerDe untuk data Anda](supported-serdes.md).

#### Jalankan MSCK REPAIR TABLE
<a name="run-msck-repair-table"></a>

Setelah Anda menjalankan `CREATE TABLE` kueri, jalankan `MSCK REPAIR TABLE` perintah di editor kueri Athena untuk memuat partisi, seperti pada contoh berikut.

```
MSCK REPAIR TABLE impressions
```

Setelah Anda menjalankan perintah ini, data siap untuk query.

#### Kueri datanya
<a name="query-the-data"></a>

Kueri data dari tabel tayangan menggunakan kolom partisi. Inilah contohnya:

```
SELECT dt,impressionid FROM impressions WHERE dt<'2009-04-12-14-00' and dt>='2009-04-12-13-00' ORDER BY dt DESC LIMIT 100
```

Kueri ini harus menunjukkan hasil yang mirip dengan berikut ini:

```
2009-04-12-13-20    ap3HcVKAWfXtgIPu6WpuUfAfL0DQEc
2009-04-12-13-20    17uchtodoS9kdeQP1x0XThKl5IuRsV
2009-04-12-13-20    JOUf1SCtRwviGw8sVcghqE5h0nkgtp
2009-04-12-13-20    NQ2XP0J0dvVbCXJ0pb4XvqJ5A4QxxH
2009-04-12-13-20    fFAItiBMsgqro9kRdIwbeX60SROaxr
2009-04-12-13-20    V4og4R9W6G3QjHHwF7gI1cSqig5D1G
2009-04-12-13-20    hPEPtBwk45msmwWTxPVVo1kVu4v11b
2009-04-12-13-20    v0SkfxegheD90gp31UCr6FplnKpx6i
2009-04-12-13-20    1iD9odVgOIi4QWkwHMcOhmwTkWDKfj
2009-04-12-13-20    b31tJiIA25CK8eDHQrHnbcknfSndUk
```

### Skenario 2: Data tidak dipartisi dalam format Hive
<a name="scenario-2-data-is-not-partitioned"></a>

Dalam contoh berikut, `aws s3 ls` perintah menunjukkan log [ELB](elasticloadbalancer-classic-logs.md) yang disimpan di Amazon S3. Perhatikan bagaimana tata letak data tidak menggunakan `key=value` pasangan dan oleh karena itu tidak dalam format Hive. (`--recursive`Opsi untuk `aws s3 ls` perintah menentukan bahwa semua file atau objek di bawah direktori atau awalan yang ditentukan dicantumkan.)

```
aws s3 ls s3://athena-examples-myregion/elb/plaintext/ --recursive

2016-11-23 17:54:46   11789573 elb/plaintext/2015/01/01/part-r-00000-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:46    8776899 elb/plaintext/2015/01/01/part-r-00001-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:46    9309800 elb/plaintext/2015/01/01/part-r-00002-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47    9412570 elb/plaintext/2015/01/01/part-r-00003-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47   10725938 elb/plaintext/2015/01/01/part-r-00004-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:46    9439710 elb/plaintext/2015/01/01/part-r-00005-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47          0 elb/plaintext/2015/01/01_$folder$
2016-11-23 17:54:47    9012723 elb/plaintext/2015/01/02/part-r-00006-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47    7571816 elb/plaintext/2015/01/02/part-r-00007-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47    9673393 elb/plaintext/2015/01/02/part-r-00008-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48   11979218 elb/plaintext/2015/01/02/part-r-00009-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48    9546833 elb/plaintext/2015/01/02/part-r-00010-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48   10960865 elb/plaintext/2015/01/02/part-r-00011-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48          0 elb/plaintext/2015/01/02_$folder$
2016-11-23 17:54:48   11360522 elb/plaintext/2015/01/03/part-r-00012-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48   11211291 elb/plaintext/2015/01/03/part-r-00013-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48    8633768 elb/plaintext/2015/01/03/part-r-00014-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49   11891626 elb/plaintext/2015/01/03/part-r-00015-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49    9173813 elb/plaintext/2015/01/03/part-r-00016-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49   11899582 elb/plaintext/2015/01/03/part-r-00017-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49          0 elb/plaintext/2015/01/03_$folder$
2016-11-23 17:54:50    8612843 elb/plaintext/2015/01/04/part-r-00018-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50   10731284 elb/plaintext/2015/01/04/part-r-00019-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50    9984735 elb/plaintext/2015/01/04/part-r-00020-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50    9290089 elb/plaintext/2015/01/04/part-r-00021-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50    7896339 elb/plaintext/2015/01/04/part-r-00022-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    8321364 elb/plaintext/2015/01/04/part-r-00023-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51          0 elb/plaintext/2015/01/04_$folder$
2016-11-23 17:54:51    7641062 elb/plaintext/2015/01/05/part-r-00024-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51   10253377 elb/plaintext/2015/01/05/part-r-00025-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    8502765 elb/plaintext/2015/01/05/part-r-00026-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51   11518464 elb/plaintext/2015/01/05/part-r-00027-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    7945189 elb/plaintext/2015/01/05/part-r-00028-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    7864475 elb/plaintext/2015/01/05/part-r-00029-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51          0 elb/plaintext/2015/01/05_$folder$
2016-11-23 17:54:51   11342140 elb/plaintext/2015/01/06/part-r-00030-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    8063755 elb/plaintext/2015/01/06/part-r-00031-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    9387508 elb/plaintext/2015/01/06/part-r-00032-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    9732343 elb/plaintext/2015/01/06/part-r-00033-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52   11510326 elb/plaintext/2015/01/06/part-r-00034-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    9148117 elb/plaintext/2015/01/06/part-r-00035-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52          0 elb/plaintext/2015/01/06_$folder$
2016-11-23 17:54:52    8402024 elb/plaintext/2015/01/07/part-r-00036-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    8282860 elb/plaintext/2015/01/07/part-r-00037-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52   11575283 elb/plaintext/2015/01/07/part-r-00038-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53    8149059 elb/plaintext/2015/01/07/part-r-00039-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53   10037269 elb/plaintext/2015/01/07/part-r-00040-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53   10019678 elb/plaintext/2015/01/07/part-r-00041-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53          0 elb/plaintext/2015/01/07_$folder$
2016-11-23 17:54:53          0 elb/plaintext/2015/01_$folder$
2016-11-23 17:54:53          0 elb/plaintext/2015_$folder$
```

#### Jalankan ALTER TABLE ADD PARTITION
<a name="run-alter-table-add-partition"></a>

Karena data tidak dalam format Hive, Anda tidak dapat menggunakan `MSCK REPAIR TABLE` perintah untuk menambahkan partisi ke tabel setelah Anda membuatnya. Sebagai gantinya, Anda dapat menggunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) perintah untuk menambahkan setiap partisi secara manual. Misalnya, untuk memuat data di s3://athena-examples - *myregion* /elb/plaintext/2015/01/01/, Anda dapat menjalankan kueri berikut. Perhatikan bahwa kolom partisi terpisah untuk setiap folder Amazon S3 tidak diperlukan, dan bahwa nilai kunci partisi dapat berbeda dari kunci Amazon S3.

```
ALTER TABLE elb_logs_raw_native_part ADD PARTITION (dt='2015-01-01') location 's3://athena-examples-us-west-1/elb/plaintext/2015/01/01/'
```

Jika partisi sudah ada, Anda menerima kesalahan Partisi sudah ada. Untuk menghindari kesalahan ini, Anda dapat menggunakan klausa `IF NOT EXISTS`. Untuk informasi selengkapnya, lihat [ALTER TABLE ADD PARTITION](alter-table-add-partition.md). Untuk menghapus partisi, Anda dapat menggunakan[ALTER TABLE DROP PARTITION](alter-table-drop-partition.md). 

## Pertimbangkan proyeksi partisi
<a name="partitions-partition-projection"></a>

Untuk menghindari keharusan mengelola partisi sendiri, Anda dapat menggunakan proyeksi partisi. Proyeksi partisi adalah opsi untuk tabel yang sangat dipartisi yang strukturnya diketahui sebelumnya. Dalam proyeksi partisi, nilai partisi dan lokasi dihitung dari properti tabel yang Anda konfigurasikan daripada dibaca dari repositori metadata. Karena perhitungan dalam memori lebih cepat daripada pencarian jarak jauh, penggunaan proyeksi partisi dapat secara signifikan mengurangi runtime kueri. 

Untuk informasi selengkapnya, lihat [Gunakan proyeksi partisi dengan Amazon Athena](partition-projection.md).

## Sumber daya tambahan
<a name="partitions-additional-resources"></a>
+ Untuk informasi tentang opsi partisi untuk data Firehose, lihat. [Contoh Amazon Data Firehose](partition-projection-kinesis-firehose-example.md)
+ Anda dapat mengotomatiskan penambahan partisi dengan menggunakan [driver JDBC](connect-with-jdbc.md). 
+ Anda dapat menggunakan CTAS dan INSERT INTO untuk partisi set data. Lihat informasi yang lebih lengkap di [Gunakan CTAS dan INSERT INTO untuk ETL dan analisis data](ctas-insert-into-etl.md).