Ubah konektor metastore Hive eksternal Athena - Amazon Athena

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

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 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 adalahApache Mavenproyek yang memiliki modul berikut:

  • hms-service-api— Berisi API operasi antara fungsi Lambda dan klien layanan Athena. APIOperasi ini didefinisikan dalam HiveMetaStoreService antarmuka. Karena ini adalah kontrak layanan, Anda tidak harus mengubah apa pun dalam modul ini.

  • hms-lambda-handler— Satu set penangan Lambda default yang memproses semua panggilan metastore Hive. API Kelas MetadataHandler adalah operator untuk semua API panggilan. Anda tidak perlu mengubah paket ini.

  • hms-lambda-func— Contoh fungsi Lambda yang memiliki komponen-komponen berikut.

    • HiveMetaStoreLambdaFunc— Contoh fungsi Lambda yang meluasMetadataHandler.

    • 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 mengesampingkangetHandlerProvider()metode.

    • hms.properties— Mengonfigurasi fungsi Lambda. Sebagian besar kasus memerlukan memperbarui dua properti berikut saja.

      • hive.metastore.uris— metastore Hive dalam format. URI 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 propertihive.metastore.response.spill.threshold. Mengubah nilai default tidak dianjurkan.

    catatan

    Kedua properti ini dapat diganti olehVariabel lingkungan Lambda HMS_URISdanSPILL_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 menempatkanhms-service-api,hms-lambda-handler, dan dependensi mereka menjadi.zipfile. Parameter.zipterdaftar 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

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

Sebelum Anda membangun artifact, memperbarui propertihive.metastore.urisdanhive.metastore.response.spill.locationdihms.propertiesfile dalamhms-lambda-funcmodul.

Untuk membangun artifact, Anda harus memiliki Apache Maven diinstal dan menjalankan perintahmvn install. Ini menghasilkan lapisan.zipfile dalam folder output yang disebuttargetdalam modulhms-lambda-layerdan fungsi Lambda.jarberkas dalam modulhms-lambd-func.