Skip to content

필사 모드: HBaseとHiveの連携方法

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

Overview

HBaseのデータをHiveで照会する方法を紹介します。

準備

既存のHiveテーブルには`u_data`というテーブルが存在します。`u_data`はMovieLensが提供するデータセットの一部であり、このデータの作成方法は[https://www.youngju.dev/blog/202211/hive_query_exampl](https://www.youngju.dev/blog/202211/hive_query_exampl)を参照してください。

データのスキーマは以下の通りです。

hive> describe u_data;

OK

userid int

movieid int

rating int

unixtime timestamp

Time taken: 0.442 seconds, Fetched: 4 row(s)

Hive-HBaseテーブルの作成方法!

テーブルの作成

hive> CREATE TABLE hbase_u_data(key int, value int)

> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

> WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val");

OK

Time taken: 2.292 seconds

以下のように、Hiveでテーブルが作成されたことを確認できます。

hive> show tables;

OK

hbase_u_data

さらに、HBaseにもそのテーブルが作成されたことを確認できます。

hbase:001:0> list

TABLE

hbase_u_data

hbase:002:0> desc 'hbase_u_data';

Table hbase_u_data is ENABLED

hbase_u_data, {TABLE_ATTRIBUTES => {METADATA => {'hbase.store.file-tracker.impl' => 'DEFAULT'}}}

COLUMN FAMILIES DESCRIPTION

{NAME => 'cf1', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_V

ERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACH

E => 'true', BLOCKSIZE => '65536 B (64KB)', METADATA => {'EVICT_BLOCKS_ON_CLOSE' => 'false', 'NEW_VERSION_BEHAVIOR' =>

'false', 'CACHE_DATA_ON_WRITE' => 'false', 'CACHE_INDEX_ON_WRITE' => 'false', 'CACHE_BLOOMS_ON_WRITE' => 'false', 'PR

EFETCH_BLOCKS_ON_OPEN' => 'false', 'CACHE_DATA_IN_L1' => 'false'}}

1 row(s)

Quota is disabled

Took 0.0953 seconds

データの挿入

HiveテーブルのデータをHBaseテーブルにinsertします。

hive> INSERT OVERWRITE TABLE hbase_u_data SELECT userid, rating FROM u_data;

HiveからHBaseにデータを投入した後、行数が異なる場合がありますが、その理由はHiveは重複キーをサポートしますが、HBaseはユニークキーのみをサポートするためです。

hive> select count(*) from hbase_u_data;

OK

943

Time taken: 18.137 seconds, Fetched: 1 row(s)

HBaseテーブルをHive-HBaseテーブルに変換する

既存のHBaseに存在する`usertable`を、Hiveでも使用できるHive-HBaseテーブルに変換することもできます。

以下はHBase上にのみ存在する`usertable`です。

hbase:004:0> desc "usertable";

Table usertable is ENABLED

usertable, {TABLE_ATTRIBUTES => {METADATA => {'hbase.store.file-tracker.impl' => 'DEFAULT'}}}

COLUMN FAMILIES DESCRIPTION

{NAME => 'family', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE', DATA_BL

OCK_ENCODING => 'NONE', COMPRESSION => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE

=> '65536 B (64KB)', REPLICATION_SCOPE => '0'}

HBaseテーブルをHive-HBaseテーブルに変換

"hbase.table.name"の値には、HBaseに現在存在するテーブル名を入力します。

hive> CREATE EXTERNAL TABLE hbase_usertable(key string, value string)

> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

> WITH SERDEPROPERTIES ("hbase.columns.mapping" = "family:field9")

> TBLPROPERTIES("hbase.table.name" = "usertable")

Time taken: 1.651 seconds

Hiveに`hbase_usertable`という名前のテーブルが作成されたことを確認できます。

hive> desc hbase_usertable;

OK

key string

value string

行数を確認して、HBaseの既存テーブルの行数とHive-HBaseテーブルの行数が一致するかチェックし、正しく作成されたことを確認します。

hive> select count(distinct key) from hbase_usertable;

Total MapReduce CPU Time Spent: 4 minutes 42 seconds 330 msec

OK

1000

以降は、このテーブルにHiveからinsertしたり、HBaseからinsertした場合、そのデータをHiveとHBaseの両方から照会できます。

より多様なユースケースについては[https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration](https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration)を参照してください。

Reference

- [https://docs.datafabric.hpe.com/70/Hive/HiveHBaseIntegration-GettingStarted.html](https://docs.datafabric.hpe.com/70/Hive/HiveHBaseIntegration-GettingStarted.html)

クイズ

HBaseとHiveの連携方法を紹介します。

以下のように、Hiveでテーブルが作成されたことを確認できます。

さらに、HBaseにもそのテーブルが作成されたことを確認できます。

HiveテーブルのデータをHBaseテーブルにinsertします。

HiveからHBaseにデータを投入した後、行数が異なる場合がありますが、その理由はHiveは重複キーをサポートしますが、HBaseはユニークキーのみをサポートするためです。

HBaseテーブルをHive-HBaseテーブルに変換する

既存のHBaseに存在するusertableを、Hiveでも使用できるHive-HBaseテーブルに変換することもできます。

以下はHBase上にのみ存在するusertableです。

"hbase.table.name"の値には、HBaseに現在存在するテーブル名を入力します。

Hiveにhbase_usertableという名前のテーブルが作成されたことを確認できます。

行数を確認して、HBaseの既存テーブルの行数とHive-HBaseテーブルの行数が一致するかチェックし、正しく作成されたことを確認します。

以降は、このテーブルにHiveからinsertしたり、HBaseからinsertした場合、そのデータをHiveとHBaseの両方から照会できます。

현재 단락 (1/77)

HBaseのデータをHiveで照会する方法を紹介します。

작성 글자: 0원문 글자: 3,837작성 단락: 0/77