Hiveを介して既存のHBaseテーブルレコードにアクセスする方法はありますか?
2 に答える
はい、それは絶対に可能です。Hbaseは「JOINS」などのSQL関数を提供しないため、実際にはHiveが頻繁に使用されます。また、Hiveを使用すると、NOSQLの用語を初めて使用するユーザーも簡単に使用できます。 Hiveで、既存のHbaseテーブルとのマッピングを提供するテーブルを作成します。このマッピングを作成するときは注意が必要です。Hbaseテーブルに存在するすべてのものを適切に含めます。ここに重要なものを1つ追加します。 .HiveをHbaseの代わりと見なすべきではありません。これは、バッチ処理に適しており、完全なリアルタイムアプリケーションには適していないためです。
Hive HBase Integration wikiページによると、次のようなcreatetableコマンドを使用できます。
CREATE TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
ただし、Hive 0.8以前でこのようなテーブルを作成すると、対応するHiveテーブルを介して挿入されたHBaseテーブルのデータにしかアクセスできないことに注意してください。Hiveテーブルを介して挿入されていない既存のデータがHBaseテーブルにある場合は、Hiveテーブルを介してデータをクエリすることもできません。
Hive0.9からJIRA1634が利用可能になり、HiveテーブルがHBaseテーブルに挿入された方法に関係なく、HBaseテーブルに存在するすべてのデータにアクセスできるようになります。