HBase學習之一: 建立hive和hbase關聯表
背景:專案中需要使用HQL對源資料進行分析,分析的結果需要做近似於實時的查詢,所以建立的表就需要在hive和hbase之間相關聯,此為背景。
drop table tbl_hive_test;
create external table tbl_hive_test
(
id string,
name string,
age string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,info:name,info:age")
TBLPROPERTIES("hbase.table.name" = "tbl_hbase_test");
說明:預設第一個欄位為rowkey,即為id。info為列簇,name為列名。hbase.table.name為hive表在habse中的名稱,建立的是外部表(external),hbase該表必須存在,否則報錯(內部表不必在hbase中先建立)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:MetaException(message:HBase table tbl_hive_test doesn't exist while the table is declared as an external table.)
在hbase shell中先建立create 'tbl_hbase_test','info'
匯入資料:
load data local inpath '/tmp/info.txt' overwrite into table tbl_hive_test partition(dt='20000101');
報錯:
FAILED: SemanticException [Error 10101]: A non-native table cannot be used as target for LOAD
如下所示:
managed native: what you get by default with CREATE TABLE
external native: what you get with CREATE EXTERNAL TABLE when no STORED BY clause is specified
managed non-native: what you get with CREATE TABLE when a STORED BY clause is specified; Hive stores the definition in its metastore, but does not create any files itself; instead,
it calls the storage handler with a request to create a corresponding object structure
external non-native: what you get with CREATE EXTERNAL TABLE when a STORED BY clause is specified; Hive registers the definition in its metastore and calls the storage handler to check
that it matches the primary definition in the other system
可看出上述建表語句屬於external non-native,不支援load,只能select另外一張表insert到此表中,建表語句如下:
create table tbl_hive_test1
(
id string,
name string,
age string
)
partitioned by(dt string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
用hive的load命令裝載資料:
load data local inpath '/tmp/a.txt' overwrite into table tbl_hive_test1 partition(dt='20000101');
a.txt的內容如下:
1001,zhangsan,19
1002,lisi,25
1003,wangwu,26
1004,zhaoliu,18
2001,limei,22
2002,hangmeimei,24
3005,lineng,17
4001,liqi,20
要在hive檢視到資料,要在hbase中事先put一條資料才能使用hql查詢到hive表中的資料。
put 'tbl_hbase_test','302','info:name','jxz'
put 'tbl_hbase_test','302','info:age','25'
在hbase可檢視 scan 'tbl_hbase_test'或get 'tbl_hbase_test','302'
最後再insert到目標表中
insert overwrite table tbl_hive_test select id,name,age from tbl_hive_test1 where dt='20000101';
相關文章
- HBase 學習之一 <<HBase使用客戶端API動態建立Hbase資料表並在Hbase下匯出執行>>客戶端API
- Hive和HBase區別Hive
- hadoop hive hbase 入門學習 (三)HadoopHive
- Hive和Hbase的區別Hive
- HBase學習
- hive與hbase的聯絡與區別Hive
- HBase篇--HBase操作Api和Java操作Hbase相關ApiAPIJava
- Hbase學習二:Hbase資料特點和架構特點架構
- HBase學習之Hbase的邏輯結構和物理結構
- HBase學習之二: hbase分頁查詢
- 最近學習了HBase
- hbase學習筆記筆記
- HIVE和HBASE的區別是什麼Hive
- hadoop 實現HIVE和HBASE協作!HadoopHive
- windows7連線hbase建立表Windows
- Hbase和Hive的特點,和應用場景Hive
- 大資料技術Hbase和Hive詳解大資料Hive
- HBase學習的第五天--HBase進階結尾和phoenix開頭
- hive學習之一:認識hiveHive
- Hive學習之一 《Hive的介紹和安裝》Hive
- HBase學習的第四天--HBase的進階與APIAPI
- 學習六:安裝配置HBASE
- Hbase篇--Hbase和MapReduce結合ApiAPI
- Hadoop 學習之-HBase安裝Hadoop
- Hbase、Hive、Impala資料同步簡單示例Hive
- hadoop+hive+hbase 的安裝配置HadoopHive
- hbase單表加ObServerServer
- HBase -ROOT-和.META.表結構
- Cassandra 和 HBase的大表模型比較模型
- 大資料學習(hbase,hive,sqoop2對資料的簡單操作)大資料HiveOOP
- CDH+HBase Indexer+Solr為HBase資料建立二級索引IndexSolr索引
- Hbase(二)Hbase常用操作
- Hbase學習筆記問題總結筆記
- HBase2實戰:HBase Flink和Kafka整合Kafka
- HBase 教程:什麼是 HBase?
- HBase篇--HBase常用優化優化
- hbase - [04] java訪問hbaseJava
- HBase 的結構與表的對應關係