

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

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

Gunakan`MSCK REPAIR TABLE`perintah untuk memperbarui metadata dalam katalog setelah Anda menambahkan partisi kompatibel Hive. 

Parameter`MSCK REPAIR TABLE`perintah memindai sistem file seperti Amazon S3 untuk partisi kompatibel Hive yang ditambahkan ke sistem file setelah tabel dibuat.`MSCK REPAIR TABLE`membandingkan partisi dalam metadata tabel dan partisi di S3. Jika partisi baru hadir di lokasi S3 yang Anda tentukan saat Anda membuat tabel, itu menambahkan partisi tersebut metadata dan tabel Athena.

Saat Anda menambahkan partisi fisik, metadata dalam katalog menjadi tidak konsisten dengan tata letak data dalam sistem file, dan informasi tentang partisi baru perlu ditambahkan ke katalog. Untuk memperbarui metadata, jalankan`MSCK REPAIR TABLE`sehingga Anda dapat mengkueri data di partisi baru dari Athena.

**catatan**  
`MSCK REPAIR TABLE`hanya menambahkan partisi ke metadata; itu tidak menghapusnya. Untuk menghapus partisi dari metadata setelah partisi dihapus secara manual di Amazon S3, jalankan perintah`ALTER TABLE {{table-name}} DROP PARTITION`. Untuk informasi selengkapnya, lihat [ALTER TABLE DROP PARTITION](alter-table-drop-partition.md). 

## Pertimbangan dan batasan
<a name="msck-repair-table-considerations"></a>

Saat menggunakan`MSCK REPAIR TABLE`, ingatlah poin-poin berikut:
+ Ini dimungkinkan akan memakan waktu untuk menambahkan semua partisi. Jika operasi ini kali keluar, itu akan berada dalam keadaan tidak lengkap tempat hanya beberapa partisi ditambahkan ke katalog. Kau harus lari`MSCK REPAIR TABLE`pada tabel yang sama sampai semua partisi ditambahkan. Untuk informasi selengkapnya, lihat [Partisi data Anda](partitions.md). 
+ Untuk partisi yang tidak kompatibel dengan Hive, gunakan[ALTER TABLE ADD PARTITION](alter-table-add-partition.md)untuk memuat partisi sehingga Anda dapat mengkueri data mereka.
+ Lokasi partisi yang akan digunakan dengan Athena harus menggunakan`s3`protokol (misalnya,`s3://amzn-s3-demo-bucket/{{folder}}/`). Di Athena, lokasi yang menggunakan protokol lain (contohnya,`s3a://{{bucket}}/{{folder}}/`) akan mengakibatkan kegagalan permintaan ketika`MSCK REPAIR TABLE`query dijalankan pada tabel yang mengandung. 
+ 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.
+ Karena masalah yang diketahui, `MSCK REPAIR TABLE` gagal secara diam-diam ketika nilai partisi berisi karakter titik dua (`:`) (misalnya, ketika nilai partisi adalah stempel waktu). Sebagai solusinya, gunakan. [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) 
+ `MSCK REPAIR TABLE`tidak menambahkan nama kolom partisi yang dimulai dengan garis bawah (\_). Untuk mengatasi batasan ini, gunakan[ALTER TABLE ADD PARTITION](alter-table-add-partition.md). 

## Sinopsis
<a name="synopsis"></a>

```
MSCK REPAIR TABLE table_name
```

## Contoh
<a name="examples"></a>

```
MSCK REPAIR TABLE orders;
```

## Pemecahan masalah
<a name="msck-repair-table-troubleshooting"></a>

Setelah Anda menjalankan`MSCK REPAIR TABLE`, jika Athena tidak menambahkan partisi ke tabel di AWS Glue Data Catalog, periksa yang berikut ini:
+ **AWS Glue akses** — Pastikan bahwa peran AWS Identity and Access Management (IAM) memiliki kebijakan yang memungkinkan `glue:BatchCreatePartition` tindakan. Untuk informasi selengkapnya, lihat [Izinkan lem: BatchCreatePartition dalam kebijakan IAM](#msck-repair-table-troubleshooting-allow-gluebatchcreatepartition-in-the-policy) nanti dalam dokumen ini.
+ **Akses Amazon S3** — Pastikan peran tersebut memiliki kebijakan dengan izin yang memadai untuk mengakses Amazon S3, termasuk tindakannya. [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html) Untuk contoh tindakan Amazon S3 yang memungkinkan, lihat kebijakan bucket contoh di [Konfigurasikan akses lintas akun di Athena ke bucket Amazon S3](cross-account-permissions.md).
+ **Casing kunci objek Amazon S3** — Pastikan jalur Amazon S3 dalam huruf kecil, bukan kotak unta (misalnya`userid`, bukan`userId`), atau `ALTER TABLE ADD PARTITION` gunakan untuk menentukan nama kunci objek. Untuk informasi selengkapnya, lihat [Ubah atau definisikan ulang jalur Amazon S3](#msck-repair-table-troubleshooting-change-or-redefine-the-amazon-s3-path) nanti dalam dokumen ini.
+ **Waktu habis kueri**—`MSCK REPAIR TABLE`paling baik digunakan saat membuat tabel untuk pertama kalinya atau saat ada ketidakpastian tentang paritas antara data dan metadata partisi. Jika Anda menggunakan`MSCK REPAIR TABLE`untuk sering menambahkan partisi baru (misalnya, setiap hari) dan mengalami timeout kueri, pertimbangkan untuk menggunakan[ALTER TABLE ADD PARTITION](alter-table-add-partition.md).
+ **Partisi hilang dari sistem file** - Jika Anda menghapus partisi secara manual di Amazon S3 dan kemudian `MSCK REPAIR TABLE` menjalankannya, Anda mungkin menerima pesan kesalahan Partisi hilang dari sistem file. Ini terjadi karena`MSCK REPAIR TABLE`tidak menghapus partisi basi dari metadata tabel. Untuk menghapus partisi yang dihapus dari tabel metadata, jalankan[ALTER TABLE DROP PARTITION](alter-table-drop-partition.md)Sebagai gantinya Perhatikan bahwa[TAMPILKAN PARTISI](show-partitions.md)juga hanya mencantumkan partisi dalam metadata, bukan partisi dalam sistem file.
+ **Kesalahan "NullPointerException name is null”**

  Jika Anda menggunakan operasi AWS Glue [CreateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateTable.html)API atau CloudFormation [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html)template untuk membuat tabel untuk digunakan di Athena tanpa menentukan `TableType` properti dan kemudian menjalankan kueri DDL seperti `SHOW CREATE TABLE` atau`MSCK REPAIR TABLE`, Anda dapat menerima pesan kesalahan GAGAL: NullPointerException  Nama adalah null. 

  Untuk mengatasi kesalahan, tentukan nilai [TableInput](https://docs.aws.amazon.com/glue/latest/webapi/API_TableInput.html)`TableType`atribut sebagai bagian dari panggilan AWS Glue `CreateTable` API atau [CloudFormation templat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html). Nilai yang mungkin untuk `TableType` include `EXTERNAL_TABLE` atau`VIRTUAL_VIEW`.

  Persyaratan ini hanya berlaku ketika Anda membuat tabel menggunakan operasi AWS Glue `CreateTable` API atau `AWS::Glue::Table` template. Jika Anda membuat tabel untuk Athena menggunakan pernyataan DDL atau AWS Glue crawler, `TableType` properti didefinisikan untuk Anda secara otomatis. 

Bagian berikut memberikan informasi tambahan.

### Izinkan lem: BatchCreatePartition dalam kebijakan IAM
<a name="msck-repair-table-troubleshooting-allow-gluebatchcreatepartition-in-the-policy"></a>

Tinjau kebijakan IAM yang dilampirkan pada peran yang Anda gunakan untuk menjalankan`MSCK REPAIR TABLE`. Saat Anda [menggunakan AWS Glue Data Catalog dengan Athena](data-sources-glue.md), kebijakan IAM harus mengizinkan tindakan tersebut. `glue:BatchCreatePartition` Untuk contoh kebijakan IAM yang memungkinkan`glue:BatchCreatePartition`tindakan, lihat[AWS kebijakan terkelola: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy).

### Ubah atau definisikan ulang jalur Amazon S3
<a name="msck-repair-table-troubleshooting-change-or-redefine-the-amazon-s3-path"></a>

Jika satu atau beberapa kunci objek di jalur Amazon S3 berada dalam huruf unta, bukan huruf kecil, `MSCK REPAIR TABLE` mungkin tidak menambahkan partisi ke file. AWS Glue Data Catalog Misalnya, jika jalur Amazon S3 Anda menyertakan nama kunci objek`userId`, partisi berikut mungkin tidak ditambahkan ke: AWS Glue Data Catalog

```
s3://amzn-s3-demo-bucket/path/userId=1/

s3://amzn-s3-demo-bucket/path/userId=2/

s3://amzn-s3-demo-bucket/path/userId=3/
```

Untuk mengatasi masalah ini, lakukan salah satu hal berikut:
+ Gunakan huruf kecil alih-alih casing unta saat Anda membuat kunci objek Amazon S3:

  ```
  s3://amzn-s3-demo-bucket/path/userid=1/
  
  s3://amzn-s3-demo-bucket/path/userid=2/
  
  s3://amzn-s3-demo-bucket/path/userid=3/
  ```
+ Gunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) untuk mendefinisikan ulang lokasi, seperti pada contoh berikut:

  ```
  ALTER TABLE table_name ADD [IF NOT EXISTS]
  PARTITION (userId=1)
  LOCATION 's3://amzn-s3-demo-bucket/path/userId=1/'
  PARTITION (userId=2)
  LOCATION 's3://amzn-s3-demo-bucket/path/userId=2/'
  PARTITION (userId=3)
  LOCATION 's3://amzn-s3-demo-bucket/path/userId=3/'
  ```

Perhatikan bahwa meskipun nama kunci objek Amazon S3 dapat menggunakan huruf besar, nama bucket Amazon S3 itu sendiri harus selalu dalam huruf kecil. Untuk informasi selengkapnya, lihat [Pedoman penamaan kunci objek](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines) dan [aturan penamaan Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) di Panduan *Pengguna Amazon S3*.