比較とHBaseのハイブの統合

 HBaseのとハイブの比較

1.Hive

(1)データウェアハウス

HDFSに保存されたファイルへの実際の同等の自然のハイブは、すでにクエリを管理するために使用HQLを容易にするために、2つのショットの関係MySQLを持っていました。

データ解析のために(2)、清掃

オフラインデータ分析およびクリーニング、長い待ち時間に適したハイブ。

HDFS、MapReduceのに基づいて、(3)

ハイブデータは、まだ最終的にMapReduceのコードの実行に変換されますHQL文で書かれた、データノードに格納されます。

2.HBase

(1)データベース

これは、非リレーショナルデータベースを格納するカラムです。

(2)データ記憶構造化および非構造化

単一テーブルの非リレーショナルデータのためのストレージではなく、関連するクエリに適した、および他の同様の操作をJOIN。

HDFSに基づいて、(3)

データの永続ストレージの形で具現化領域で管理するResionServerにデータノードに格納されているのhFileです。

(4)低遅延は、使用してオンラインサービスにアクセスします

効率的なデータアクセス速度を提供しながら、エンタープライズデータの多数の顔は、HBaseのは、大量のデータを格納するために単一のテーブル線形とすることができます。

6.4.2のHBaseとHiveの統合利用

ヒントスクリーミング:HBaseのとハイブ統合は、最新の2つのバージョンが互換性がないことができます。ハイブHBaseのハンドラ-1.2.2.jarは:だから、私たちは勇敢な再コンパイルを涙することができます!良い空気!

環境の準備

私たちが動作し、HBaseのハイブジャーの動作を保持するために必要されている間にもHBaseのハイブに影響を与える可能性が従っているので、その後、次のコピーハイブジャーパッケージが依存(またはソフト有線の形で)。

輸出HBASE_HOME =は/ opt /モジュール/ HBaseの

輸出HIVE_HOME =は/ opt /モジュール/ハイブ

 

LN -s $ HBASE_HOME / libに/ HBaseの共通-1.3.1.jar $ HIVE_HOME / libに/ HBaseの共通-1.3.1.jar

LN -s $ HBASE_HOME / libに/ HBaseのサーバ-1.3.1.jar $ HIVE_HOME / libに/ HBaseのサーバ-1.3.1.jar

LN -s $ HBASE_HOME / libに/ HBaseのクライアント-1.3.1.jar $ HIVE_HOME / libに/ HBaseのクライアント-1.3.1.jar

LN -s $ HBASE_HOME / libに/ HBaseのプロトコル-1.3.1.jar $ HIVE_HOME / libに/ HBaseのプロトコル-1.3.1.jar

LN -s $ HBASE_HOME / libに/ HBaseの-IT-1.3.1.jar $ HIVE_HOME / libに/ HBaseの-IT-1.3.1.jar

LN -s $ HBASE_HOME / libに/ HTRACEコア-3.1.0-incubating.jar $ HIVE_HOME / libに/ HTRACEコア-3.1.0-incubating.jar

LN -s $ HBASE_HOME / libに/ HBaseの-hadoop2-compatの-1.3.1.jar $ HIVE_HOME / libに/ HBaseの-hadoop2-compatの-1.3.1.jar

LN -s $ HBASE_HOME / libに/ HBaseの-Hadoopの-compatの-1.3.1.jar $ HIVE_HOME / libに/ HBaseの-Hadoopの-compatの-1.3.1.jar

次のように飼育係はまた、ハイブ-site.xmlののプロパティを変更します。

<プロパティ>

  <名前> hive.zookeeper.quorum </名前>

  <値> hadoop102、hadoop103、hadoop104 </ value>の

  <説明>に話をするのZooKeeperサーバーのリストを指定します。これはのみ、読み取り/書き込みロックのために必要とされている。</記述>

</プロパティ>

<プロパティ>

  <name>hive.zookeeper.client.port</name>

  <value>2181</value>

  <description>The port of ZooKeeper servers to talk to. This is only needed for read/write locks.</description>

</property>

1.案例一

目标:建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表。

分步实现:

(1) 在Hive中创建表同时关联HBase

CREATE TABLE hive_hbase_emp_table(

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");

提示:完成之后,可以分别进入Hive和HBase查看,都生成了对应的表

(2) 在Hive中创建临时中间表,用于load文件中的数据

提示:不能将数据直接load进Hive所关联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';

(3) 向Hive中间表中load数据

hive> load data local inpath '/home/admin/softwares/data/emp.txt' into table emp;

(4) 通过insert命令将中间表中的数据导入到Hive关联HBase的那张表中

hive> insert into table hive_hbase_emp_table select * from emp;

(5) 查看Hive以及关联的HBase表中是否已经成功的同步插入了数据

Hive:

hive> select * from hive_hbase_emp_table;

HBase:

hbase> scan ‘hbase_emp_table’

2.案例二

目标:在HBase中已经存储了某一张表hbase_emp_table,然后在Hive中创建一个外部表来关联HBase中的hbase_emp_table这张表,使之可以借助Hive来分析HBase这张表中的数据。

注:该案例2紧跟案例1的脚步,所以完成此案例前,请先完成案例1。

分步实现:

(1) 在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");

(2) 关联后就可以使用Hive函数进行一些分析操作了

hive (default)> select * from relevance_hbase_emp;

おすすめ

転載: www.cnblogs.com/tesla-turing/p/11959954.html