

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

# Menggunakan Katalog Data AWS Glue sebagai metastore untuk Hive
<a name="emr-hive-metastore-glue"></a>

Menggunakan Amazon EMR rilis 5.8.0 atau yang lebih baru, Anda dapat mengonfigurasi Hive untuk menggunakan Katalog Data AWS Glue sebagai metastore. Kami merekomendasikan konfigurasi ini ketika Anda memerlukan metastore persisten atau metastore bersama oleh kelompok yang berbeda, Layanan, aplikasi, atau AWS rekening.

AWS Glue adalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya yang membuatnya sederhana dan hemat biaya untuk mengkategorikan data Anda, membersihkannya, memperkayanya, dan memindahkannya dengan andal di antara berbagai penyimpanan data. Katalog Data AWS Glue menyediakan repositori metadata terpadu di berbagai sumber data dan format data, terintegrasi dengan Amazon EMR serta Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena, dan aplikasi apa pun yang kompatibel dengan metastore Apache Hive. AWS Glue crawler dapat secara otomatis menyimpulkan skema dari data sumber di Amazon S3 dan menyimpan metadata terkait dalam Katalog Data. Untuk informasi selengkapnya tentang Katalog Data, lihat [Mengisi Katalog Data AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) di *Panduan Pengembang AWS Glue*.

Biaya terpisah berlaku untuk AWS Glue. Ada tarif bulanan untuk menyimpan dan mengakses metadata di Katalog Data, tarif per jam yang ditagih per menit untuk pekerjaan AWS Glue ETL dan runtime crawler, dan tarif per jam yang ditagih per menit untuk setiap titik akhir pengembangan yang disediakan. Katalog Data memungkinkan Anda untuk menyimpan hingga satu juta objek tanpa biaya. Jika Anda menyimpan lebih dari satu juta objek, Anda dikenakan biaya USD\$11 untuk setiap 100.000 objek lebih dari satu juta. Sebuah objek dalam Katalog Data adalah tabel, partisi, atau database. Untuk informasi lebih lanjut, lihat [Harga Glue](https://aws.amazon.com/glue/pricing).

**penting**  
Jika Anda membuat tabel menggunakan Amazon Athena atau Amazon Redshift Spectrum sebelum 14 Agustus 2017, database dan tabel disimpan dalam katalog yang dikelola Athena, yang terpisah dari Katalog Data Glue. AWS Untuk mengintegrasikan Amazon EMR dengan tabel ini, Anda harus meningkatkan ke Katalog Data AWS Glue. Untuk informasi selengkapnya, lihat [Memutakhirkan ke Katalog Data AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) di Panduan *Pengguna Amazon Athena*.

## Menentukan Katalog Data AWS Glue sebagai metastore
<a name="emr-hive-glue-configure"></a>

Anda dapat menentukan Katalog Data AWS Glue sebagai metastore menggunakan Konsol Manajemen AWS, AWS CLI, atau Amazon EMR API. Bila Anda menggunakan CLI atau API, Anda menggunakan klasifikasi konfigurasi untuk Hive untuk menentukan Katalog Data. Selain itu, dengan Amazon EMR 5.16.0 dan yang lebih baru, Anda dapat menggunakan klasifikasi konfigurasi untuk menentukan Katalog Data yang berbeda. Akun AWS Bila menggunakan konsol, Anda dapat menentukan Katalog Data menggunakan **Opsi lanjutan** atau **Opsi cepat**.

------
#### [ Console ]

**Untuk menentukan AWS Glue Data Catalog sebagai metastore Hive dengan konsol**

1. [Masuk ke Konsol Manajemen AWS, dan buka konsol EMR Amazon di https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. **Di bawah **EMR pada EC2** di panel navigasi kiri, pilih Clusters, lalu pilih **Create cluster**.**

1. **Di bawah **Application bundle**, pilih **Core Hadoop**, **HBase**, atau Custom.** Jika Anda menyesuaikan cluster Anda, pastikan bahwa Anda memilih Hive atau HCatalog sebagai salah satu aplikasi Anda.

1. Di bawah **Pengaturan AWS Glue Data Catalog**, pilih kotak centang **Use for Hive table metadata**.

1. Pilih opsi lain yang berlaku untuk cluster Anda. 

1. Untuk meluncurkan klaster Anda, pilih **Buat klaster**.

------
#### [ CLI ]

**Untuk menentukan Katalog Data AWS Glue sebagai metastore Hive dengan AWS CLI**

Untuk informasi selengkapnya tentang menentukan klasifikasi konfigurasi menggunakan API EMR AWS CLI dan EMR, lihat. [Konfigurasikan aplikasi](emr-configure-apps.md)
+ Tentukan nilai untuk `hive.metastore.client.factory.class` menggunakan `hive-site` klasifikasi konfigurasi seperti yang ditunjukkan dalam contoh berikut:

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
      }
    }
  ]
  ```

  Pada versi rilis EMR 5.28.0, 5.28.1, 5.29.0, atau 6.x, jika Anda membuat cluster menggunakan Glue AWS Data Catalog sebagai metastore, atur ke. `hive.metastore.schema.verification` `false` Ini mencegah Hive dan HCatalog memvalidasi skema metastore terhadap MySQL. Tanpa konfigurasi ini, grup instance utama akan ditangguhkan setelah konfigurasi ulang di Hive atau. HCatalog 

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false"
      }
    }
  ]
  ```

  Jika Anda sudah memiliki cluster pada rilis EMR versi 5.28.0, 5.28.1, atau 5.29.0, Anda dapat mengatur grup instans utama dengan informasi berikut: `hive.metastore.schema.verification` `false`

  ```
     
      Classification = hive-site
      Property       = hive.metastore.schema.verification
      Value          = false
  ```

  Untuk menentukan Katalog Data di AWS akun yang berbeda, tambahkan `hive.metastore.glue.catalogid` properti seperti yang ditunjukkan pada contoh berikut. Ganti `acct-id` dengan AWS akun Katalog Data.

  ```
  [
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

------

## Izin IAM
<a name="emr-hive-glue-permissions"></a>

Profil instans EC2 untuk cluster harus memiliki izin IAM untuk tindakan AWS Glue. Selain itu, jika Anda mengaktifkan enkripsi untuk objek AWS Glue Data Catalog, peran juga harus diizinkan untuk mengenkripsi, mendekripsi, dan menghasilkan yang AWS KMS key digunakan untuk enkripsi.

### Izin untuk tindakan AWS Glue
<a name="emr-hive-glue-permissions-actions"></a>

Jika Anda menggunakan profil instans EC2 default untuk Amazon EMR, tindakan tidak diperlukan. Kebijakan `AmazonElasticMapReduceforEC2Role` terkelola yang dilampirkan pada `EMR_EC2_DefaultRole` memungkinkan semua tindakan AWS Glue yang diperlukan. Namun, jika Anda menentukan profil dan izin instans EC2 kustom, Anda harus mengonfigurasi tindakan AWS Glue yang sesuai. Gunakan `AmazonElasticMapReduceforEC2Role` Kebijakan yang dikelola sebagai titik awal. Untuk informasi selengkapnya, lihat [Peran layanan untuk instans EC2 cluster (profil instans EC2) di Panduan](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) Manajemen *EMR* Amazon.

### Izin untuk mengenkripsi dan mendekripsi Katalog Data Glue AWS
<a name="emr-hive-glue-permissions-encrypt"></a>

Profil instans Anda memerlukan izin untuk mengenkripsi dan mendekripsi data menggunakan kunci Anda. Anda *tidak* perlu mengonfigurasi izin ini jika kedua pernyataan berikut berlaku:
+ Anda mengaktifkan enkripsi untuk objek AWS Glue Data Catalog menggunakan kunci AWS terkelola untuk Glue.
+ Anda menggunakan cluster yang Akun AWS sama dengan AWS Glue Data Catalog.

Jika tidak, Anda harus menambahkan pernyataan berikut ke kebijakan izin yang dilampirkan ke profil instans EC2 Anda. 

Untuk informasi selengkapnya tentang enkripsi AWS Glue Data Catalog, lihat [Mengenkripsi katalog data Anda di Panduan](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) *Pengembang AWS Glue*.

### Izin berbasiskan sumber daya
<a name="emr-hive-glue-permissions-resource"></a>

Jika Anda menggunakan AWS Glue bersama dengan Hive, Spark, atau Presto di Amazon EMR AWS , Glue mendukung kebijakan berbasis sumber daya untuk mengontrol akses ke sumber daya Katalog Data. Sumber daya ini termasuk database, tabel, koneksi, dan fungsi yang ditetapkan pengguna. Untuk informasi lebih lanjut, lihat [AWS Kebijakan sumber daya Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) di *AWS Panduan Developer Glue*.

Saat menggunakan kebijakan berbasis sumber daya untuk membatasi akses ke Glue AWS dari dalam Amazon EMR, prinsip yang Anda tentukan dalam kebijakan izin harus berupa ARN peran yang terkait dengan profil instans EC2 yang ditentukan saat kluster dibuat. Misalnya, untuk kebijakan berbasis sumber daya yang dilampirkan ke katalog, Anda dapat menentukan peran ARN untuk peran layanan default untuk instance EC2 klaster, *EMR\$1EC2\$1DefaultRole* seperti`Principal`, menggunakan format yang ditampilkan dalam contoh berikut:

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id*Bisa berbeda dari ID akun AWS Glue. Hal ini memungkinkan akses dari cluster EMR di account yang berbeda. Anda dapat menentukan beberapa kepala sekolah, masing-masing dari akun yang berbeda.

## Pertimbangan saat menggunakan AWS Glue Data Catalog
<a name="emr-hive-glue-considerations-hive"></a>

Pertimbangkan item berikut saat menggunakan AWS Glue Data Catalog sebagai metastore dengan Hive:
+ Menambahkan bantu JARs menggunakan shell Hive tidak didukung. Sebagai solusinya, gunakan klasifikasi `hive-site` konfigurasi untuk menyetel `hive.aux.jars.path` properti, yang menambahkan tambahan JARs ke classpath Hive.
+ [Transaksi hive](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions) tidak didukung.
+ Mengganti nama tabel dari dalam AWS Glue tidak didukung.
+ Bila Anda membuat tabel Hive tanpa menentukan `LOCATION`, data tabel disimpan di lokasi yang ditentukan oleh `hive.metastore.warehouse.dir` properti. Secara default, ini adalah lokasi di HDFS. Jika gugus lain perlu mengakses tabel, gagal kecuali memiliki izin yang memadai untuk gugus yang dibuat tabel. Selain itu, karena penyimpanan HDFS sementara, jika gugus berakhir, data tabel hilang, dan tabel harus diciptakan kembali. Kami menyarankan Anda menentukan `LOCATION` di Amazon S3 saat Anda membuat tabel Hive menggunakan Glue. AWS Atau, Anda dapat menggunakan `hive-site` klasifikasi konfigurasi untuk menentukan lokasi di Amazon S3 untuk `hive.metastore.warehouse.dir`, yang berlaku untuk semua tabel Hive. Jika tabel dibuat di lokasi HDFS dan cluster yang membuatnya masih berjalan, Anda dapat memperbarui lokasi tabel ke Amazon S3 dari dalam AWS Glue. Untuk informasi selengkapnya, lihat [Bekerja dengan Tabel di Konsol AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) di *Panduan Pengembang AWS Glue*. 
+ Nilai partisi yang berisi tanda kutip dan apostrof tidak didukung, misalnya, `PARTITION (owner="Doe's").`
+ [Statistik kolom](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics) didukung untuk emr-5.31.0 dan yang lebih baru.
+ Menggunakan [Otorisasi hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization) tidak didukung. Sebagai alternatif, pertimbangkan untuk menggunakan [AWS Kebijakan Berbasis Sumber Daya Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html). Untuk informasi selengkapnya, lihat [Menggunakan Kebijakan Berbasis Sumber Daya untuk Amazon EMR Access to Glue](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html) Data Catalog. AWS 
+ [Kendala Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Constraints) tidak didukung.
+ [Optimasi berbasiskan biaya di Hive](https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive) tidak didukung.
+ Pengaturan `hive.metastore.partition.inherit.table.properties` tidak didukung. 
+ Menggunakan konstanta metastore berikut ini tidak didukung: `BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION`.
+ Bila Anda menggunakan ekspresi predikat, nilai-nilai eksplisit harus berada di sisi kanan operator perbandingan, atau permintaan mungkin gagal.
  + **Benar**: `SELECT * FROM mytable WHERE time > 11`
  + **Salah**: `SELECT * FROM mytable WHERE 11 > time`
+ Amazon EMR versi 5.32.0 dan 6.3.0 dan yang lebih baru mendukung menggunakan fungsi yang ditentukan pengguna () dalam ekspresi predikat. UDFs Saat menggunakan versi sebelumnya, kueri Anda mungkin gagal karena cara Hive mencoba mengoptimalkan eksekusi kueri.
+ [Tabel sementara](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TemporaryTables) tidak didukung.
+ Sebaiknya buat tabel menggunakan aplikasi melalui Amazon EMR daripada membuatnya langsung menggunakan Glue AWS . Membuat tabel melalui AWS Glue dapat menyebabkan bidang wajib hilang dan menyebabkan pengecualian kueri.
+ Di EMR 5.20.0 atau yang lebih baru, pemangkasan partisi paralel diaktifkan secara otomatis untuk Spark dan Hive saat AWS Glue Data Catalog digunakan sebagai metastore. Perubahan ini secara signifikan mengurangi waktu perencanaan kueri dengan mengeksekusi beberapa permintaan secara paralel untuk mengambil partisi. Jumlah segmen yang dapat dieksekusi secara bersamaan berkisar antara 1 dan 10. Nilai default-nya adalah 5, yang merupakan pengaturan yang disarankan. Anda dapat mengubahnya dengan menentukan properti `aws.glue.partition.num.segments` dalam klasifikasi konfigurasi `hive-site`. Jika terjadi throttling, Anda dapat mematikan fitur ini dengan mengubah nilai-nya menjadi 1. Untuk informasi lebih lanjut, lihat [Struktur Segmen Glue AWS](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-Segment).