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
Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.
Prasyarat
Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat Buat koneksi sumber data atau Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data.
Parameter
Gunakan parameter di bagian ini untuk mengkonfigurasi konektor HBase.
catatan
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari properti AWS Glue koneksi yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda menggunakan konektor sumber data Athena versi sebelumnya secara manual.
Kami menyarankan Anda mengkonfigurasi konektor HBase dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel glue_connection lingkungan dari konektor HBase Lambda ke nama koneksi Glue yang akan digunakan.
Properti koneksi lem
Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.
aws glue describe-connection-type --connection-type HBASE
Properti lingkungan Lambda
Properti lingkungan Lambda berikut hanya berlaku ketika Anda menggunakan konektor dengan fungsi Lambda di akun Anda.
-
glue_connection - Menentukan nama koneksi Glue yang terkait dengan konektor federasi.
catatan
-
Semua konektor yang menggunakan koneksi AWS Glue Data Catalog federasi harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
-
Konektor HBase yang dibuat menggunakan koneksi AWS Glue Data Catalog federasi tidak mendukung penggunaan handler multiplexing.
-
Konektor HBase yang dibuat menggunakan koneksi AWS Glue Data Catalog federasi hanya mendukung
ConnectionSchemaVersion2.
-
spill_bucket - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
-
spill_prefix — (Opsional) Default ke subfolder dalam nama yang ditentukan.
spill_bucketathena-federation-spillKami 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 AES-GCM mode enkripsi yang diautentikasi dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, Anda dapat menentukan ID kunci KMS. -
disable_spill_encryption — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan.
TrueDefaultnyaFalsesehingga 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 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
trueHBase. Nilai default-nyafalse. 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
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 menggunakan metadata sebagai AWS Glue
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
-
Saat Anda mengedit tabel dan database di AWS Glue konsol, tambahkan properti tabel berikut:
hbase-metadata-flag — Properti ini menunjukkan pada konektor HBase bahwa konektor dapat menggunakan tabel untuk metadata tambahan. Anda dapat memberikan nilai apa pun
hbase-metadata-flagselamahbase-metadata-flagproperti hadir dalam daftar properti tabel.-
hbase-native-storage-flag - Gunakan bendera 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 seperti
INT,BIGINT, danDOUBLEdari 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, danDOUBLEsebagai byte dengan menggunakan fungsi berikut:ByteBuffer.wrap(value).getInt() ByteBuffer.wrap(value).getLong() ByteBuffer.wrap(value).get() ByteBuffer.wrap(value).getDouble()
-
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.
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
-
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.
Performa
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
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 yang sesuai