(1) 數據倉庫sql
Hive 的本質其實就至關於將 HDFS 中已經存儲的文件在 Mysql 中作了一個雙射關係,以數據庫
方便使用HQL 去管理查詢。apache
(2) 用於數據分析、清洗app
Hive 適用於離線的數據分析和清洗,延遲較高。函數
(3) 基於HDFS、MapReduceoop
Hive 存儲的數據依舊在DataNode 上,編寫的HQL 語句終將是轉換爲MapReduce 代碼執行。spa
(1) 數據庫code
是一種面向列存儲的非關係型數據庫。orm
(2) 用於存儲結構化和非結構化的數據server
適用於單表非關係型數據的存儲,不適合作關聯查詢,相似JOIN 等操做。
(3) 基於HDFS
數據持久化存儲的體現形式是Hfile,存放於 DataNode 中,被 ResionServer 以 region 的形式進行管理。
(4) 延遲較低,接入在線業務使用
面對大量的企業數據,HBase 能夠直線單表大量數據的存儲,同時提供了高效的數據訪問速度。
尖叫提示:HBase 與 Hive 的集成在最新的兩個版本中沒法兼容。因此,咱們只能含着淚勇敢的從新編譯:hive-hbase-handler-1.2.2.jar
由於咱們後續可能會在操做 Hive 的同時對 HBase 也會產生影響,因此 Hive 須要持有操做
HBase 的Jar,那麼接下來拷貝Hive 所依賴的Jar 包(或者使用軟鏈接的形式)。
export HBASE_HOME=/opt/module/hbase export HIVE_HOME=/opt/module/hive ln -s $HBASE_HOME/lib/hbase-common-1.3.1.jar $HIVE_HOME/lib/hbase-common-1.3.1.jar ln -s $HBASE_HOME/lib/hbase-server-1.3.1.jar $HIVE_HOME/lib/hbase-server-1.3.1.jar ln -s $HBASE_HOME/lib/hbase-client-1.3.1.jar $HIVE_HOME/lib/hbase-client-1.3.1.jar ln -s $HBASE_HOME/lib/hbase-protocol-1.3.1.jar $HIVE_HOME/lib/hbase-protocol-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-core-3.1.0-incubating.jar$HIVE_HOME/lib/htrace-core-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
同時在 hive-site.xml 中修改 zookeeper 的屬性,以下:
<property> <name>hive.zookeeper.quorum</name> <value>hadoop102,hadoop103,hadoop104</value> <description>The list of ZooKeeper servers to talk to. This is only needed for read/write locks.</description> </property> <property> <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>
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");
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';
hive> load data local inpath '/home/admin/softwares/data/emp.txt' into table emp;
hive> insert into table hive_hbase_emp_table select * from emp;
hive> select * from hive_hbase_emp_table;
hbase> scan ‘hbase_emp_table’
注:實際上HDFS上的hive下不存HBase的文件
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");
hive (default)> select * from relevance_hbase_emp;