

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

# Ubah konektor metastore Hive eksternal Athena
<a name="datastores-hive-reference-implementation"></a>

Jika Anda memiliki persyaratan khusus, Anda dapat memodifikasi konektor Athena untuk metastore Hive eksternal untuk Anda gunakan sendiri. Athena menyediakan implementasi referensi konektor GitHub di.com di. [https://github.com/awslabs/aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore) Sebagian besar kasus penggunaan tidak mengharuskan Anda untuk memodifikasi implementasi referensi. Namun, jika perlu, Anda dapat memodifikasi kode sumber dan membangun artefak sendiri.

Implementasi referensi adalah[Apache Maven](https://maven.apache.org/)proyek yang memiliki modul berikut:
+ `hms-service-api`— Berisi operasi API antara fungsi Lambda dan klien layanan Athena. Operasi API ini didefinisikan dalam`HiveMetaStoreService`antarmuka. Karena ini adalah kontrak layanan, Anda tidak harus mengubah apa pun dalam modul ini.
+ `hms-lambda-handler`- Satu set default Lambda penangan yang memproses semua Hive metastore API panggilan. Kelas`MetadataHandler`adalah petugas operator untuk semua panggilan API. Anda tidak perlu mengubah paket ini.
+ `hms-lambda-func`— Contoh fungsi Lambda yang memiliki komponen-komponen berikut.
  + `HiveMetaStoreLambdaFunc`— Contoh fungsi Lambda yang meluas`MetadataHandler`.
  + `ThriftHiveMetaStoreClient`— Klien Thrift yang berkomunikasi dengan Hive metastore. Klien ini ditulis untuk Hive 2.3.0. Jika Anda menggunakan versi Hive yang berbeda, Anda mungkin perlu memperbarui kelas ini untuk memastikan bahwa objek respon yang kompatibel.
  + `ThriftHiveMetaStoreClientFactory`— Mengontrol perilaku fungsi Lambda. Sebagai contoh, Anda dapat menyediakan seperangkat penyedia handler Anda sendiri dengan mengesampingkan`getHandlerProvider()`metode.
  + `hms.properties`— Mengonfigurasi fungsi Lambda. Sebagian besar kasus memerlukan memperbarui dua properti berikut saja.
    + `hive.metastore.uris`— URI dari metastore Hive dalam format`thrift://{{<host_name>}}:9083`.
    + `hive.metastore.response.spill.location`: Lokasi Amazon S3 untuk menyimpan objek respons ketika ukurannya melebihi ambang batas tertentu (misalnya, 4 MB). Ambang batas didefinisikan dalam properti`hive.metastore.response.spill.threshold`. Mengubah nilai default tidak dianjurkan.
**catatan**  
Kedua properti ini dapat diganti oleh[Variabel lingkungan Lambda](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html) `HMS_URIS`dan`SPILL_LOCATION`. Gunakan variabel ini bukannya mengkompilasi ulang kode sumber untuk fungsi Lambda saat Anda ingin menggunakan fungsi dengan metastore Hive atau tumpahan lokasi yang berbeda.
+ `hms-lambda-layer`- Sebuah proyek perakitan Maven yang menempatkan`hms-service-api`,`hms-lambda-handler`, dan dependensi mereka menjadi`.zip`file. Parameter`.zip`terdaftar sebagai lapisan Lambda untuk digunakan oleh beberapa fungsi Lambda.
+ `hms-lambda-rnp`— Merekam respons dari fungsi Lambda dan kemudian menggunakannya untuk memutar ulang respons. Anda dapat menggunakan model ini untuk mensimulasikan respons Lambda untuk pengujian.

## Membangun artefak sendiri
<a name="datastores-hive-reference-implementation-building-the-artifacts-yourself"></a>

Setelah memodifikasi kode sumber, Anda dapat membuat artefak sendiri dan mengunggahnya ke lokasi Amazon S3.

Sebelum Anda membangun artifact, memperbarui properti`hive.metastore.uris`dan`hive.metastore.response.spill.location`di`hms.properties`file dalam`hms-lambda-func`modul.

Untuk membangun artifact, Anda harus memiliki Apache Maven diinstal dan menjalankan perintah`mvn install`. Ini menghasilkan lapisan`.zip`file dalam folder output yang disebut`target`dalam modul`hms-lambda-layer`dan fungsi Lambda`.jar`berkas dalam modul`hms-lambd-func`.