hbase和hive的相互整合(需要兼容)
来源:互联网 发布:免费数据可视化工具 编辑:程序博客网 时间:2024/06/16 08:21
也是前几天才知道,hive这玩意可以和hbase整合,就在网上找了些资料,准备用我的单节点试一试,单节点上面安装的apache版本的hbase和hive,导致整合的时候不兼容,一直报错:
org.apache.hadoop.hbase.HTableDescriptor.addFamily
找不到addFamily方法,所以只有用cdh的版本了(chd有对应的安装包的版本,兼容好)
已经安装hbase :http://blog.csdn.net/qq_20641565/article/details/54410271
已经安装hive :http://blog.csdn.net/qq_20641565/article/details/55211393
hbase安装在cdhnode3 (master),cdhnode4 ,cdhnode5
hive客户端在cdhnode5
- 1.进入hive的和hbase的shell客户端
[hadoop@cdhnode3 ~]$ ./app/hbase-1.0.0-cdh5.4.5/bin/hbase shell[hadoop@cdhnode5 ~]$ hive
- 2.在hive下面创建
CREATE TABLE hbase01(key string, name string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name") TBLPROPERTIES ("hbase.table.name" = "lijie01");
这里是在hive中创建一个hbase01的映射表
“hbase.columns.mapping” = “:key,cf1:name”:这里是字段映射
“hbase.table.name” = “lijie01”:这里是hbase的表映射(自动创建)
- 3.查看hbase的表
这里多了一个list01
hbase(main):006:0> listTABLE lijie lijie01 2 row(s) in 0.0160 seconds=> ["lijie", "lijie01"]
- 4.创建一个hive临时并插入数据
#创建临时表hive> create table lijietemp( > key string, > name string > ) > row format delimited fields terminated by ',' > stored as textfile;OKTime taken: 0.292 seconds#向临时表插入数据hive> load data local inpath '/home/hadoop/test.txt' overwrite into table lijietemp;Loading data to table default.lijietempTable default.lijietemp stats: [numFiles=1, numRows=0, totalSize=35, rawDataSize=0]OKTime taken: 0.38 seconds
- 5.向hive中的hbase映射表hbase01中插入数据
hive> insert into hbase01 select * from lijietemp;
- 6.查看hive中的数据,以及hbase中的数据(数据应该一致)
hive数据查看:
hive> select * from hbase01;OK1001 lijie1002 zhangsan1003 lisiTime taken: 0.175 seconds, Fetched: 3 row(s)
hbase数据查看:
hbase(main):007:0> scan 'lijie01' ROW COLUMN+CELL 1001 column=cf1:name, timestamp=1487149773218, value=lijie 1002 column=cf1:name, timestamp=1487149773218, value=zhangsan 1003 column=cf1:name, timestamp=1487149773218, value=lisi 3 row(s) in 0.4880 seconds
- 7.利用hbase向表中添加数据,查看hive中的数据是否一致
hbase表中插入数据:
hbase(main):008:0> put 'lijie01','1004','cf1:name','hbaseputdata'0 row(s) in 0.2580 seconds
查看hive表中是否一致(发现也多了上面添加的数据):
hive> select * from hbase01;OK1001 lijie1002 zhangsan1003 lisi1004 hbaseputdataTime taken: 0.124 seconds, Fetched: 4 row(s)
- 8.hive映射hbase中已经存在的表,先在hbase中创建一个表,并且插入数据
建表:
hbase(main):010:0> create 'lijie02','cf1','cf2'0 row(s) in 0.4530 seconds=> Hbase::Table - lijie02
插入一条测试数据:
hbase(main):011:0> put 'lijie02','0000001','cf1:name','lijie'0 row(s) in 0.0820 secondshbase(main):012:0> put 'lijie02','0000001','cf2:age','24'0 row(s) in 0.0640 seconds
- 9.在hive中创建一个外部映射表(创建内部表会报错:hbase已经存在这个表)
hive> CREATE EXTERNAL TABLE hbase02(key string, name string, age int) > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name,cf2:age") > TBLPROPERTIES ("hbase.table.name" = "lijie02");OKTime taken: 0.204 seconds
- 10.验证是否映射成功
hive> select * from hbase02;OK0000001 lijie 24Time taken: 0.144 seconds, Fetched: 1 row(s)
发现有hbase中的数据,说明整合成功
- 11.测试向hive中添加数据
再创建一个hive临时表
hive> > create table lijietemp1( > key string, > name string, > age int > ) > row format delimited fields terminated by ',' > stored as textfile;
添加数据
hive> load data local inpath '/home/hadoop/test.txt' overwrite into table lijietemp1;Loading data to table default.lijietemp1Table default.lijietemp1 stats: [numFiles=1, numRows=0, totalSize=44, rawDataSize=0]OKTime taken: 0.271 seconds
向hive中插入数据
hive> insert into hbase02 select * from lijietemp1;
- 11.查看hive表中的数据和hbase的数据是否同步
hive表查询结果:
hive> select * from hbase02;OK0000001 lijie 241001 lijie 241002 zhangsan 251003 lisi 26Time taken: 0.097 seconds, Fetched: 4 row(s)
hbase表查询结果:
hbase(main):014:0> scan 'lijie02'ROW COLUMN+CELL 0000001 column=cf1:name, timestamp=1487151262045, value=lijie 0000001 column=cf2:age, timestamp=1487151262045, value=24 1001 column=cf1:name, timestamp=1487151621148, value=lijie 1001 column=cf2:age, timestamp=1487151621148, value=24 1002 column=cf1:name, timestamp=1487151621148, value=zhangsan 1002 column=cf2:age, timestamp=1487151621148, value=25 1003 column=cf1:name, timestamp=1487151621148, value=lisi 1003 column=cf2:age, timestamp=1487151621148, value=26 4 row(s) in 0.0350 seconds
结果hbase表的数据和hive表中的数据一致
注意:
如果是创建的hive内部表,删除了hive中的表,hbase中的表也会被删除。
如果是创建的hive外部表,删除了hive中的表,hbase表的数据没影响。
- hbase和hive的相互整合(需要兼容)
- hive和hbase的整合
- HBase和Hive的整合
- Hbase和Hive整合
- hbase和hive整合
- Hive和Hbase整合
- hive和hbase整合
- Hive和Hbase整合
- Hive和HBase整合
- hive和hbase整合
- hive和hbase的整合-转
- HIVE和HBASE的整合步骤
- Hive和HBase的整合原理
- Hive和Hbase的数据整合联系
- Hive和HBase的整合原理
- 【Hive/HBase】Hive与HBase的整合
- Hive 与 Hbase的整合(四)
- hive学习教程(五):hive和Hbase整合
- sftp 安全文件传输
- 数据结构与算法分析笔记与总结(java实现)--排序7:基数排序练习题
- eclipse中添加tomcat8:The Apache Tomcat installation at this directory is version 8.5.11. A Tomcat 8.0 i
- Groovy循环
- Could Not Get the Value for Parameter compilerId for Plugin Execution
- hbase和hive的相互整合(需要兼容)
- 5亿整数的大文件,怎么排?
- 机器学习知识体系
- 第三十三套
- 应用软件和操作系统的本质区别
- H5移动端知识点总结
- Linux下实现脚本监测特定进程占用内存情况
- 数据结构与算法分析笔记与总结(java实现)--排序8:小范围排序练习题
- Eclipse导入Maven项目