

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

# Konektor Amazon Athena HBase
<a name="connectors-hbase"></a>

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

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

 HBase Konektor 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 HBase namespace 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 HBase koleksi Anda.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan di 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
<a name="connectors-hbase-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Parameter
<a name="connectors-hbase-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi HBase konektor.

**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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda [menggunakan konektor sumber data Athena versi sebelumnya secara manual](connect-data-source-serverless-app-repo.md).

### AWS Glue Data Catalog konektor federasi
<a name="connectors-hbase-gc"></a>

Kami menyarankan Anda mengkonfigurasi HBase konektor dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan HBase konektor 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.
 HBase Konektor yang dibuat menggunakan koneksi AWS Glue Data Catalog federasi tidak mendukung penggunaan handler multiplexing.
 HBase Konektor yang dibuat menggunakan koneksi AWS Glue Data Catalog federasi hanya mendukung `ConnectionSchemaVersion` 2.

### Konektor federasi katalog data Athena
<a name="connectors-hbase-legacy"></a>
+ **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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) 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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *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 seperti`a7e63k4b-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.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **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](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .
+ **default\_hbase** - Jika ada, menentukan string HBase koneksi untuk digunakan ketika tidak ada variabel lingkungan khusus katalog.
+ **enable\_case\_insensitive\_match** — (Opsional) Saat`true`, melakukan pencarian yang tidak peka huruf besar/kecil terhadap nama tabel di. HBase Nilai default-nya `false`. Gunakan jika kueri Anda berisi nama tabel huruf besar.

#### Menentukan string koneksi
<a name="connectors-hbase-specifying-connection-strings"></a>

Anda dapat memberikan satu atau beberapa properti yang menentukan detail HBase koneksi untuk HBase instance 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 HBase contoh 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 HBase koneksi dalam format berikut:

```
{{master_hostname}}:{{hbase_port}}:{{zookeeper_port}}
```

##### Menggunakan rahasia
<a name="connectors-hbase-using-secrets"></a>

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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) titik akhir VPC untuk terhubung ke Secrets Manager.](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html)

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
<a name="connectors-hbase-setting-up-databases-and-tables-in-aws-glue"></a>

Inferensi skema bawaan konektor hanya mendukung nilai yang diserialkan 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 HBase, Anda harus memiliki AWS Glue database dan tabel dengan nama yang cocok dengan HBase namespace dan tabel yang ingin Anda berikan metadata tambahan untuk. Penggunaan konvensi penamaan keluarga HBase kolom 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 pada HBase konektor 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 HBase sebagai string. Dengan demikian ia akan mencoba untuk mengurai tipe data seperti`INT`,`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 membaca`INT`,`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()
     ```

1. Pastikan Anda menggunakan tipe data yang sesuai AWS Glue seperti yang tercantum dalam dokumen ini.

### Pemodelan keluarga kolom
<a name="connectors-hbase-modeling-column-families"></a>

 HBase Konektor Athena mendukung dua cara untuk memodelkan keluarga HBase kolom: penamaan yang memenuhi syarat (diratakan) seperti`family:column`, atau menggunakan objek. `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 seperti`STRUCT`, 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.](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/connectors-hbase-1.png)


## Dukungan tipe data
<a name="connectors-hbase-data-type-support"></a>

Konektor mengambil semua HBase nilai 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
<a name="connectors-hbase-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-hbase.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hbase/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**— HBase Konektor hanya membutuhkan akses baca 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 HBase titik akhir 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 Anda. HBase 

## Performa
<a name="connectors-hbase-performance"></a>

 HBase Konektor Athena mencoba memparalelkan kueri terhadap HBase instans Anda dengan membaca setiap server wilayah secara paralel. HBase Konektor Athena 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. `LIMIT`klausa 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. HBase Konektor tahan terhadap pelambatan karena konkurensi.

## Kueri passthrough
<a name="connectors-hbase-passthrough-queries"></a>

 HBase Konektor mendukung [kueri passthrough dan berbasis](federated-query-passthrough.md) NoSQL. Untuk informasi tentang kueri Apache HBase menggunakan pemfilteran, lihat [Menyaring bahasa dalam dokumentasi](https://hbase.apache.org/book.html#thrift.filter_language) 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 kueri HBase passthrough untuk karyawan berusia 24 atau 30 dalam `employee` koleksi `default` database.

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

## Informasi lisensi
<a name="connectors-hbase-license-information"></a>

Proyek HBase konektor Amazon Athena dilisensikan di bawah Lisensi [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Sumber daya tambahan
<a name="connectors-hbase-additional-resources"></a>

Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hbase) GitHub di.com.