HBaseのとハイブの相互作用
1、環境の準備
我々は運転しながらも、HBaseのハイブに影響を与える可能性が従っているので、それはHBaseのハイブジャーの動作を保持するために必要とされ、その後、次のコピーハイブジャーパッケージが依存(またはソフト有線の形で)。
$輸出HBASE_HOME =は/ opt /モジュール/ CDH / HBaseの-0.98.6-cdh5.3.6 /
$輸出HIVE_HOME =は/ opt /モジュール/ CDH /ハイブ-0.13.1-cdh5.3.6 /
$のln -s $ HBASE_HOME / libに/hbase-common-0.98.6-cdh5.3.6.jar $ HIVE_HOME / libに/ HBaseの共通-0.98.6-cdh5.3.6.jar
$ LN -s $ HBASE_HOME / libに/ HBaseのサーバ-0.98.6-CDH5 .3.6.jar $ HIVE_HOME / libに/ HBaseのサーバ-0.98.6-cdh5.3.6.jar
$ LN -s $ HBASE_HOME / libに/ HBaseのクライアント-0.98.6-cdh5.3.6.jar $ HIVE_HOME / libに/ HBaseの-client-0.98.6-cdh5.3.6.jar
$ LN -s $ HBASE_HOME / libに/ HBaseのプロトコル-0.98.6-cdh5.3.6.jar $ HIVE_HOME / libに/ HBaseのプロトコル-0.98.6-cdh5.3.6 .jar
$のln -s $ HBASE_HOME / libに/ HBaseの-IT-0.98.6-cdh5.3.6.jar $ HIVE_HOME / libに/ HBaseの-それは-0.98.6-cdh5.3.6.jar
$ LN -s $ HBASE_HOME / libに/htrace-core-2.04.jar $ HIVE_HOME / libに/ HTRACE-コア- 2.04.jar
$ LN -s $ HBASE_HOME / libに/ HBaseの-hadoop2-compatの-0.98.6-cdh5.3.6.jar $ HIVE_HOME / libに/ HBaseの-hadoop2-compatの-0.98.6-cdh5.3.6.jar
$ LN -s $ HBASE_HOME /lib/hbase-hadoop-compat-0.98.6-cdh5.3.6.jar $ HIVE_HOME / libに/ HBaseの-Hadoopの-compatの-0.98.6-cdh5.3.6.jar
$ LN -s $ HBASE_HOME / libに/高規模-lib-1.1.1.jar $ HIVE_HOME / libに/高規模-LIB-1.1.1.jar
一方でハイブは-site.xml次のように、飼育係のプロパティを変更します。
図2に示すように、ケース1:ハイブがHBaseの影響を与えることができながら、CVテーブルハイブ、HBaseのアソシエーションテーブル、データテーブルに挿入します
ステップ1 で、で作成ハイブのHBaseに関連付けられ、同時にテーブル
表hive_hbase_emp_table(CREATE
EMPNO int型、
ENAME列、
仕事の文字列、
MGRはint、
HIREDATE列、
SALダブル、
COMMダブル、
DEPTNO int型)
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'によって保存され
SERDEPROPERTIES WITH(「hbase.columnsを.mapping」= ":キー、情報:ENAME、情報:ジョブ情報:MGR、情報:HIREDATE、情報:SAL、情報:COMM、インフォ:DEPTNO")
TBLPROPERTIES( " "hbase.table.name"=" hbase_emp_table );
(ヒントスクリーミング:終了後、それぞれのHBaseハイブビューを入力し、対応テーブルを生成します)
STEP 2 中間ハイブに一時テーブルを作成するために、(注:そのテーブルに関連したHBaseのハイブに直接データをロードしない)のためのデータロードファイル。
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
Step3、向Hive中间表中load数据
hive> load data local inpath '/home/admin/Desktop/emp.txt' into table emp;
Step4、通过insert命令将中间表中的数据导入到Hive关联HBase的那张表中
hive> insert into table hive_hbase_emp_table select * from emp;
Step5、测试,查看Hive以及关联的HBase表中是否已经成功的同步插入了数据
如图所示:
Hive中:
HBase中:
3、案例2:比如在HBase中已经存储了某一张表hbase_emp_table,然后在Hive中创建一个外部表来关联HBase中的hbase_emp_table这张表,使之可以借助Hive来分析HBase这张表中的数据。
该案例2紧跟案例1的脚步,所以完成此案例前,请先完成案例1。
Step1、在Hive中创建外部表
CREATE EXTERNAL TABLE relevance_hbase_emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =
":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");
Step2、关联后就可以使用Hive函数进行一些分析操作了
在此,我们查询一下所有数据试试看
hive (default)> select * from relevance_hbase_emp;