Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan AWS Katalog Data Glue sebagai metastore untuk Hive
Menggunakan Amazon EMR versi 5.8.0 atau yang lebih baru, Anda dapat mengkonfigurasi Hive untuk menggunakan AWS Katalog Data Glue sebagai metastore nya. 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 toko data. Parameter AWS Katalog Data Glue menyediakan repositori metadata terpadu di berbagai sumber data dan format data, mengintegrasikan dengan Amazon EMR serta Amazon RDS, Amazon Redshift, Redshift Spectrum Redena, Athena, dan aplikasi yang kompatibel dengan metastore Apache Hive. AWS Glue crawler dapat secara otomatis menyimpulkan skema dari sumber data di Amazon S3 dan menyimpan metadata terkait dalam Katalog Data. Untuk informasi selengkapnya tentang Katalog Data, lihat Mengisi AWS Katalog data Glue di AWS Panduan Developer Glue.
Biaya terpisah berlaku untuk AWS Glue. Ada tarif bulanan untuk menyimpan dan mengakses metadata di Katalog Data, tarif per jam ditagih per menit untuk AWS Glue pekerjaan ETL dan runtime crawler, dan tarif per jam ditagih per menit untuk setiap endpoint pengembangan ditetapkan. Katalog Data memungkinkan Anda untuk menyimpan hingga satu juta objek tanpa biaya. Jika Anda menyimpan lebih dari satu juta objek, Anda dikenakan biaya USD$1 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
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 AWS Katalog Data Glue. Untuk mengintegrasikan Amazon EMR dengan tabel ini, Anda harus meng-upgrade ke AWS Katalog Data Glue. Untuk informasi lebih lanjut, lihat Mengupgrade ke AWS Katalog data Glue di Panduan Pengguna Amazon Athena.
Menentukan AWS Katalog Data Glue sebagai metastore
Anda dapat menentukan AWS Glue Katalog Data sebagai metastore menggunakan AWS Management Console, 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 kemudian, Anda dapat menggunakan klasifikasi konfigurasi untuk menentukan Katalog Data yang berbedaAkun AWS. Bila menggunakan konsol, Anda dapat menentukan Katalog Data menggunakan Opsi lanjutan atau Opsi cepat.
Pilihan untuk menggunakan Katalog Data ini juga tersedia dengan HCatalog karena Hive diinstal dengan HCatalog.
Untuk menentukan AWS Glue Katalog Data sebagai metastore menggunakan konsol
-
Buka konsol Amazon EMR di https://console.aws.amazon.com/emr
. -
Pilih Buat Kluster, Buka opsi tingkat lanjut.
-
Untuk Rilis, pilih emr-5.8.0 atau yang lebih baru.
-
Di bagian Rilis, pilih Hive atau HCatalog.
-
Di bawahAWS Pengaturan Katalog Data Glue Pilih Gunakan untuk metadata tabel Hive.
-
Pilih opsi lain untuk cluster Anda yang sesuai, pilih Selanjutnya, dan kemudian mengkonfigurasi pilihan cluster lain yang sesuai untuk aplikasi Anda.
Untuk menentukan AWS Glue Katalog Data sebagai metastore menggunakan klasifikasi konfigurasi
Untuk informasi lebih lanjut tentang menentukan klasifikasi konfigurasi menggunakan AWS CLI dan API EMR, lihat Konfigurasikan aplikasi.
-
Tentukan nilai untuk
hive.metastore.client.factory.class
menggunakanhive-site
klasifikasi konfigurasi seperti yang ditunjukkan dalam contoh berikut:[ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } } ]
EMR rilis versi 5.28.0, 5.28.1, 5.29.0, atau 6.x, jika Anda membuat sebuah cluster menggunakanAWS Glue Katalog Data sebagai metastore, mengatur
hive.metastore.schema.verification
kefalse
. Tindakan ini mencegah Hive dan HCatalog memvalidasi skema metastore terhadap MySQL. Tanpa konfigurasi ini, kelompok master contoh akan menjadi ditangguhkan setelah rekonfigurasi pada 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 sebuah cluster pada EMR rilis versi 5.28.0, 5.28.1, atau 5.29.0, Anda dapat mengatur grup contoh master
hive.metastore.schema.verification
kefalse
Dengan informasi berikut:Classification = hive-site Property = hive.metastore.schema.verification Value = false
Untuk menentukan Katalog Data yang berbeda AWS akun, tambahkan
hive.metastore.glue.catalogid
Properti seperti yang ditunjukkan dalam contoh berikut. Ganti
dengan AWS akun Katalog Data.acct-id
[ { "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
Profil contoh EC2 untuk cluster harus memiliki izin IAM untuk AWS Tindakan Glue. Selain itu, jika Anda mengaktifkan enkripsi untukAWS Glue Katalog Data objek, peran juga harus diizinkan untuk mengenkripsi, mendekripsi dan menghasilkan yangAWS KMS key digunakan untuk enkripsi.
Izin tindakan Glue AWS
Jika Anda menggunakan profil instans EC2 default untuk Amazon EMR, tidak ada tindakan yang diperlukan. Kebijakan yangAmazonElasticMapReduceforEC2Role
dikelola yang melekat padaEMR_EC2_DefaultRole
memungkinkan semua tindakanAWS Glue yang diperlukan. Namun, jika Anda menentukan profil instans EC2 kustom dan izin, Anda harus mengkonfigurasi TindakanAWS Glue yang sesuai. Gunakan AmazonElasticMapReduceforEC2Role
Kebijakan yang dikelola sebagai titik awal. Untuk informasi selengkapnya, lihat Peran layanan untuk contoh cluster EC2 (EC2 contoh profil) di Panduan Manajemen Amazon EMR.
Izin untuk mengenkripsi dan mendekripsi AWS Katalog data Glue
Profil instans Anda memerlukan izin untuk mengenkripsi dan mendekripsi data menggunakan kunci Anda. Anda tidak perlu mengkonfigurasi izin ini jika kedua pernyataan berikut berlaku:
-
Anda mengaktifkan enkripsi untuk objek Katalog DataAWS Glue menggunakan kunciAWS terkelola untuk Glue.
-
Anda menggunakan klaster yangAkun AWS sama dengan Katalog DataAWS Glue.
Jika tidak, Anda harus menambahkan pernyataan berikut ini ke kebijakan izin yang dilampirkan ke profil instans EC2 Anda.
[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:acct-id
:key/12345678-1234-1234-1234-123456789012
" } ] } ]
Untuk informasi lebih lanjut tentang AWS Enkripsi Katalog Data Glue, lihat Mengenkripsi katalog data Anda di AWS Panduan Developer Glue.
Izin berbasiskan sumber daya
Jika Anda menggunakan AWS Glue dalam hubungannya 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 di AWS Panduan Developer Glue.
Saat menggunakan kebijakan berbasis sumber daya untuk membatasi akses ke AWS Glue dari dalam Amazon EMR, kepala sekolah yang Anda tentukan dalam kebijakan izin harus peran ARN terkait dengan profil contoh EC2 yang ditentukan ketika cluster dibuat. Misalnya, untuk kebijakan berbasis sumber daya yang dilampirkan ke katalog, Anda dapat menentukan peran ARN untuk peran layanan default untuk contoh cluster EC2, EMR_EC2_DefaultRole
sebagaiPrincipal
, menggunakan format yang ditunjukkan dalam contoh berikut:
arn:aws:iam::
acct-id
:role/EMR_EC2_DefaultRole
Parameter ID akt-
bisa berbeda dari AWS ID akun 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 ketika menggunakan AWS Katalog data Glue
Pertimbangkan item berikut saat menggunakan AWS Glue Katalog Data sebagai metastore dengan Hive:
-
Menambahkan JAR tambahan menggunakan shell Hive tidak didukung. Sebagai solusi, gunakan klasifikasi konfigurasi
hive-site
untuk menetapkan propertihive.aux.jars.path
, yang menambahkan JAR tambahan ke classpath Hive. -
Transaksi hive
tidak didukung. Mengganti nama tabel dari dalam Glue AWS tidak didukung.
Bila Anda membuat tabel Hive tanpa menentukan
LOCATION
, data tabel disimpan di lokasi yang ditentukan olehhive.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 sarankan Anda menentukanLOCATION
di Amazon S3 saat Anda membuat tabel Hive menggunakan AWS Glue. Atau, Anda dapat menggunakanhive-site
klasifikasi konfigurasi untuk menentukan lokasi di Amazon S3 untukhive.metastore.warehouse.dir
, yang berlaku untuk semua tabel Hive. Jika tabel dibuat di lokasi HDFS dan cluster yang dibuat itu masih berjalan, Anda dapat memperbarui lokasi tabel untuk Amazon S3 dari dalam AWS Glue. Untuk informasi lebih lanjut, lihat Bekerja dengan Tabel pada AWS Glue console di AWS Panduan Developer Glue.Nilai partisi yang berisi tanda kutip dan apostrof tidak didukung, misalnya,
PARTITION (owner="Doe's").
Statistik kolom
didukung untuk emr-5.31.0 dan yang lebih baru. Menggunakan Otorisasi hive
tidak didukung. Sebagai alternatif, pertimbangkan untuk menggunakan AWSKebijakan Berbasis Sumber Daya Glue. Untuk informasi lebih lanjut, lihat Gunakan Kebijakan Berbasis Sumber Daya untuk Amazon EMR Access ke AWS Katalog data Glue. Kendala Hive
tidak didukung. Optimasi berbasiskan biaya di 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 kemudian mendukung menggunakan fungsi yang ditentukan pengguna (UDF) dalam ekspresi predikat. Ketika menggunakan versi yang lebih lama, query Anda mungkin gagal karena cara Hive mencoba untuk mengoptimalkan eksekusi query.
Tabel sementara
tidak didukung. Kami merekomendasikan membuat tabel menggunakan aplikasi melalui Amazon EMR daripada membuat mereka langsung menggunakan AWS Glue. Membuat tabel melalui AWS Glue dapat menyebabkan bidang yang diperlukan untuk hilang dan menyebabkan pengecualian permintaan.
Dalam EMR 5.20.0 atau yang lebih baru, partisi parallel pemangkasan diaktifkan secara otomatis untuk Spark dan Hive ketikaAWS Glue Katalog Data digunakan sebagai metastore tersebut. 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 konfigurasihive-site
. Jika terjadi throttling, Anda dapat mematikan fitur ini dengan mengubah nilai-nya menjadi 1. Untuk informasi lebih lanjut, lihat Struktur Segmen Glue AWS.