Konektor Amazon Athena HBase - Amazon Athena

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

Konektor Amazon Athena HBase

Konektor Amazon Athena HBase memungkinkan Amazon Athena berkomunikasi dengan instans Apache HBase Anda sehingga Anda dapat menanyakan data HBase Anda dengan SQL.

Tidak seperti penyimpanan data relasional tradisional, koleksi HBase tidak memiliki skema yang ditetapkan. HBase tidak memiliki toko metadata. Setiap entri dalam koleksi HBase dapat memiliki bidang dan tipe data yang berbeda.

Konektor HBase mendukung dua mekanisme untuk menghasilkan informasi skema tabel: inferensi skema dasar dan metadata. AWS Glue Data Catalog

Inferensi skema adalah default. Opsi ini memindai sejumlah kecil dokumen dalam koleksi Anda, membentuk gabungan semua bidang, dan memaksa bidang yang memiliki tipe data yang tidak tumpang tindih. Opsi ini berfungsi dengan baik untuk koleksi yang sebagian besar memiliki entri seragam.

Untuk koleksi dengan variasi tipe data yang lebih besar, konektor mendukung pengambilan metadata dari file. AWS Glue Data Catalog Jika konektor melihat AWS Glue database dan tabel yang cocok dengan namespace HBase dan nama koleksi Anda, ia mendapatkan informasi skema dari tabel yang sesuai. AWS Glue Saat Anda membuat AWS Glue tabel, kami sarankan Anda menjadikannya superset dari semua bidang yang mungkin ingin Anda akses dari koleksi HBase Anda.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

Prasyarat

Parameter

Gunakan variabel lingkungan Lambda di bagian ini untuk mengkonfigurasi konektor HBase.

  • spill_bucket - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.

  • spill_prefix — (Opsional) Default ke subfolder dalam nama yang ditentukan. spill_bucket athena-federation-spill Kami menyarankan Anda mengonfigurasi siklus hidup penyimpanan Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.

  • spill_put_request_headers — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). putObject {"x-amz-server-side-encryption" : "AES256"} Untuk kemungkinan header lainnya, lihat PutObjectdi Referensi API Amazon Simple Storage Service.

  • kms_key_id — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS sepertia7e63k4b-8loc-40db-a2a1-4d0en2cd8331, Anda dapat menentukan ID kunci KMS.

  • disable_spill_encryption — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. True Defaultnya False sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.

  • disable_glue — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue

  • glue_catalog - (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .

  • default_hbase - Jika ada, menentukan string koneksi HBase untuk digunakan ketika tidak ada variabel lingkungan khusus katalog.

  • enable_case_insensitive_match — (Opsional) Saat, melakukan pencarian yang tidak peka huruf besar/kecil terhadap nama tabel di true HBase. Nilai default-nya false. Gunakan jika kueri Anda berisi nama tabel huruf besar.

Menentukan string koneksi

Anda dapat memberikan satu atau beberapa properti yang menentukan detail koneksi HBase untuk instance HBase yang Anda gunakan dengan konektor. Untuk melakukan ini, tetapkan variabel lingkungan Lambda yang sesuai dengan nama katalog yang ingin Anda gunakan di Athena. Misalnya, Anda ingin menggunakan kueri berikut untuk menanyakan dua instance HBase yang berbeda dari Athena:

SELECT * FROM "hbase_instance_1".database.table
SELECT * FROM "hbase_instance_2".database.table

Sebelum Anda dapat menggunakan dua pernyataan SQL ini, Anda harus menambahkan dua variabel lingkungan ke fungsi hbase_instance_1 Lambda Anda: dan. hbase_instance_2 Nilai untuk masing-masing harus berupa string koneksi HBase dalam format berikut:

master_hostname:hbase_port:zookeeper_port

Menggunakan rahasia

Anda dapat secara opsional menggunakan AWS Secrets Manager sebagian atau seluruh nilai untuk detail string koneksi Anda. Untuk menggunakan fitur Kueri Federasi Athena dengan Secrets Manager, VPC yang terhubung ke fungsi Lambda Anda harus memiliki akses internet atau titik akhir VPC untuk terhubung ke Secrets Manager.

Jika Anda menggunakan sintaks ${my_secret} untuk memasukkan nama rahasia dari Secrets Manager di string koneksi Anda, konektor menggantikan nama rahasia dengan nama pengguna dan nilai kata sandi Anda dari Secrets Manager.

Misalnya, Anda menyetel variabel lingkungan Lambda hbase_instance_1 ke nilai berikut:

${hbase_host_1}:${hbase_master_port_1}:${hbase_zookeeper_port_1}

Athena Query Federation SDK secara otomatis mencoba untuk mengambil rahasia bernama dari Secrets hbase_instance_1_creds Manager dan menyuntikkan nilai tersebut sebagai pengganti. ${hbase_instance_1_creds} Setiap bagian dari string koneksi yang dilampirkan oleh kombinasi ${ } karakter ditafsirkan sebagai rahasia dari Secrets Manager. Jika Anda menentukan nama rahasia yang tidak dapat ditemukan konektor di Secrets Manager, konektor tidak menggantikan teks.

Menyiapkan database dan tabel di AWS Glue

Inferensi skema bawaan konektor hanya mendukung nilai yang diserialkan dalam HBase sebagai string (misalnya,). String.valueOf(int) Karena kemampuan inferensi skema bawaan konektor terbatas, Anda mungkin ingin menggunakannya AWS Glue untuk metadata sebagai gantinya. Untuk mengaktifkan AWS Glue tabel untuk digunakan dengan HBase, Anda harus memiliki AWS Glue database dan tabel dengan nama yang cocok dengan namespace HBase dan tabel yang ingin Anda berikan metadata tambahan. Penggunaan konvensi penamaan keluarga kolom HBase adalah opsional tetapi tidak diperlukan.

Untuk menggunakan AWS Glue tabel untuk metadata tambahan
  1. Saat Anda mengedit tabel dan database di AWS Glue konsol, tambahkan properti tabel berikut:

    • hbase-metadata-flag- Properti ini menunjukkan ke konektor HBase bahwa konektor dapat menggunakan tabel untuk metadata tambahan. Anda dapat memberikan nilai apa pun hbase-metadata-flag selama hbase-metadata-flag properti hadir dalam daftar properti tabel.

    • hbase-native-storage-flag— Gunakan tanda ini untuk mengaktifkan dua mode serialisasi nilai yang didukung oleh konektor. Secara default, ketika bidang ini tidak ada, konektor mengasumsikan semua nilai disimpan dalam HBase sebagai string. Dengan demikian ia akan mencoba untuk mengurai tipe data sepertiINT,BIGINT, dan DOUBLE dari HBase sebagai string. Jika bidang ini diatur dengan nilai apa pun pada tabel AWS Glue, konektor beralih ke mode penyimpanan “asli” dan mencoba membacaINT,BIGINT,BIT, dan DOUBLE sebagai byte dengan menggunakan fungsi berikut:

      ByteBuffer.wrap(value).getInt() ByteBuffer.wrap(value).getLong() ByteBuffer.wrap(value).get() ByteBuffer.wrap(value).getDouble()
  2. Pastikan Anda menggunakan tipe data yang sesuai AWS Glue seperti yang tercantum dalam dokumen ini.

Pemodelan keluarga kolom

Konektor Athena HBase mendukung dua cara untuk memodelkan keluarga kolom HBase: penamaan yang sepenuhnya memenuhi syarat (diratakan) seperti, atau menggunakan objek. family:column STRUCT

Dalam STRUCT model, nama STRUCT bidang harus sesuai dengan keluarga kolom, dan anak-anak STRUCT harus cocok dengan nama kolom keluarga. Namun, karena predikat push down dan pembacaan kolom belum sepenuhnya didukung untuk tipe kompleks sepertiSTRUCT, penggunaan saat ini tidak STRUCT disarankan.

Gambar berikut menunjukkan tabel yang dikonfigurasi di AWS Glue yang menggunakan kombinasi dari dua pendekatan.

Pemodelan keluarga kolom AWS Glue untuk Apache Hbase.

Dukungan tipe data

Konektor mengambil semua nilai HBase sebagai tipe byte dasar. Kemudian, berdasarkan bagaimana Anda mendefinisikan tabel Anda di Katalog AWS Glue Data, itu memetakan nilai ke salah satu tipe data Apache Arrow dalam tabel berikut.

AWS Glue tipe data Tipe data Apache Arrow
int INT
bigint BIGINT
double FLOAT8
float FLOAT4
boolean BIT
biner VARBINARY
string VARCHAR
catatan

Jika Anda tidak menggunakan AWS Glue untuk melengkapi metadata Anda, inferensi skema konektor hanya menggunakan tipe BIGINT data,, dan. FLOAT8 VARCHAR

Izin yang Diperlukan

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau Policies bagian file athena-hbase.yaml. Daftar berikut merangkum izin yang diperlukan.

  • Akses tulis Amazon S3 - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.

  • Athena GetQueryExecution — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.

  • AWS Glue Data Catalog- Konektor HBase memerlukan akses baca saja ke AWS Glue Data Catalog untuk mendapatkan informasi skema.

  • CloudWatch Log — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.

  • AWS Secrets Manager akses baca - Jika Anda memilih untuk menyimpan detail titik akhir HBase di Secrets Manager, Anda harus memberikan akses konektor ke rahasia tersebut.

  • Akses VPC — Konektor memerlukan kemampuan untuk memasang dan melepaskan antarmuka ke VPC Anda sehingga dapat terhubung dengannya dan berkomunikasi dengan instans HBase Anda.

Kinerja

Konektor Athena HBase mencoba memparalelkan kueri terhadap instance HBase Anda dengan membaca setiap server wilayah secara paralel. Konektor Athena HBase melakukan pushdown predikat untuk mengurangi data yang dipindai oleh kueri.

Fungsi Lambda juga melakukan pushdown proyeksi untuk mengurangi data yang dipindai oleh kueri. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama. LIMITklausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan SELECT kueri dengan LIMIT klausa untuk memindai setidaknya 16 MB data.

HBase rentan terhadap kegagalan kueri dan waktu eksekusi kueri variabel. Anda mungkin harus mencoba lagi pertanyaan Anda beberapa kali agar berhasil. Konektor HBase tahan terhadap pelambatan karena konkurensi.

Kueri passthrough

Konektor HBase mendukung kueri passthrough dan berbasis NoSQL. Untuk informasi tentang kueri Apache HBase menggunakan pemfilteran, lihat Menyaring bahasa dalam dokumentasi Apache.

Untuk menggunakan kueri passthrough dengan HBase, gunakan sintaks berikut:

SELECT * FROM TABLE( system.query( database => 'database_name', collection => 'collection_name', filter => '{query_syntax}' ))

Berikut contoh filter query passthrough HBase untuk karyawan berusia 24 atau 30 dalam employee koleksi database. default

SELECT * FROM TABLE( system.query( DATABASE => 'default', COLLECTION => 'employee', FILTER => 'SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:30'')' || ' OR SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:24'')' ))

Informasi lisensi

Proyek konektor Amazon Athena HBase dilisensikan di bawah Lisensi Apache-2.0.

Sumber daya tambahan

Untuk informasi tambahan tentang konektor ini, kunjungi situs terkait GitHub di.com.