hive hbase整合
来源:互联网 发布:如何评价红楼梦 知乎 编辑:程序博客网 时间:2024/06/07 20:32
hive hbase整合,要求比较多
1.hive的得是0.6.0(当前最新的版本)
2.hive本身要求Hadoop的最高版本是hadoop-0.20.2
3.要求hbase的版本是0.20.3,其他版本需要重新编译hive_hbase-handler
但是新版的hbase(0.90)变动特别大,根本无法从编译。这点比较恶心,hbase目前升级比较快,当前是0.90(从0.20.6直接跳到0.89),至于为什么这样跳跃,参考官方的解释http://wiki.apache.org/hadoop/Hbase/HBaseVersions
1)启动Hbase
要求hbase-0.20.3,zookeeper-3.2.2
如果使用的不是hbase-0.20.3需要重新编译hive_hbase-handler.jar
2)单节点HBase的连接
./bin/hive -hiveconf hbase.master=master:60000
3)集群HBase的连接
1.启动zookeeper
2.启动hbase
3.启动hive,添加zookeeper的支持
Java代码
1../bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B
//所有的zookeeper节点
二、插入数据
启动
Java代码
1../bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003
hive
1.创建hbase识别的数据库
Java代码
1.CREATE TABLE hbase_table_1(key int, value string)
2.STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 3.WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") 4.TBLPROPERTIES ("hbase.table.name" = "xyz"); hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族
2.使用sql导入数据
i.预先准备数据
a)新建hive的数据表
Java代码
1.CREATE TABLE pokes (foo INT, bar STRING);
b)批量插入数据
Java代码
hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;
这个文件位于hive的安装目录下,examples/files/kv1.txt
Java代码
1.ii.使用sql导入hbase_table_1
Java代码
1.INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;
注意,默认的启动会报错的
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.ExecDriver
启动的时候要添加
Java代码
1.-auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar
3查看数据
Java代码
1.hive> select * from hbase_table_1;
会显示刚刚插入的数据
86 val_86
hbase
1.登录hbase
Java代码
[root@master hbase]# ./bin/hbase shell
2.查看表结构
Java代码
1.hbase(main):001:0> describe 'xyz'
2.DESCRIPTION ENABLED
3. {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', COMPRESSION => 'NONE', VE true
4. RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>
5. 'false', BLOCKCACHE => 'true'}]}
6.1 row(s) in 0.7460 seconds 3.查看加载的数据
Java代码
1.hbase(main):002:0> scan 'xyz'
2.ROW COLUMN+CELL
3. 86 column=cf1:val, timestamp=1297690405634, value=val_86
1 row(s) in 0.0540 seconds
可以看到,在hive中添加的数据86,已经在hbase中了
4.添加数据
Java代码
1.' hbase(main):008:0> put 'xyz','100','cf1:val','www.360buy.com'
2.0 row(s) in 0.0630 seconds
Hive
参看hive中的数据
Java代码
1.hive> select * from hbase_table_1;
2.OK
3.100 www.360buy.com 4.86 val_86 5.Time taken: 8.661 seconds 刚刚在hbase中插入的数据,已经在hive里了
hive访问已经存在的hbase
使用CREATE EXTERNAL TABLE
Java代码
1.CREATE EXTERNAL TABLE hbase_table_2(key int, value string)
2.STORED BY 'org.apache.Hadoop.hive.hbase.HBaseStorageHandler'
3.WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")
4.TBLPROPERTIES("hbase.table.name" = "some_existing_table");
三、多列和多列族(Multiple Columns and Families)
1.创建数据库
Java代码
1.CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int)
2.STORED BY 'org.apache.Hadoop.hive.hbase.HBaseStorageHandler'
3.WITH SERDEPROPERTIES (
4."hbase.columns.mapping" = ":key,a:b,a:c,d:e" 5.);
2.插入数据
Java代码
1.INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2
2.FROM pokes WHERE foo=98 OR foo=100;
这个有3个hive的列(value1和value2,value3),2个hbase的列族(a,d)
Hive的2列(value1和value2)对应1个hbase的列族(a,在hbase的列名称b,c),hive的另外1列(value3)对应列(e)位于列族(d)
3.登录hbase查看结构
Java代码
1.hbase(main):003:0> describe "hbase_table_2"
2.DESCRIPTION ENABLED
3. {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true
4. ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M
5. EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>
6. 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN
7. _MEMORY => 'false', BLOCKCACHE => 'true'}]}
8.1 row(s) in 1.0630 seconds 4.查看hbase的数据
Java代码
1.hbase(main):004:0> scan 'hbase_table_2'
2.ROW COLUMN+CELL
3. 100 column=a:b, timestamp=1297695262015, value=val_100
4. 100 column=a:c, timestamp=1297695262015, value=101
5. 100 column=d:e, timestamp=1297695262015, value=102
6. 98 column=a:b, timestamp=1297695242675, value=val_98
7. 98 column=a:c, timestamp=1297695242675, value=99
8. 98 column=d:e, timestamp=1297695242675, value=100
9.2 row(s) in 0.0380 seconds 5.在hive中查看
Java代码
1.hive> select * from hbase_table_2;
2.OK
3.100 val_100 101 102 4.98 val_98 99 100 5.Time taken: 3.238 seconds
- hive系列-hive整合hbase
- Hbase和Hive整合
- Hive HBase 整合
- Hive HBase 整合(中文)
- Hive HBase 整合(中文)
- hive+hbase整合
- hive与hbase整合
- hbase,hive整合
- hive 整合 hbase
- HADOOP、HIVE、HBASE整合
- hbase和hive整合
- hive hbase整合
- Hive HBase 集群整合
- Hive和Hbase整合
- hbase与hive整合
- hive与hbase整合
- hive与Hbase整合
- Hive HBase 整合
- OpenStack源码探秘(一)——Nova-Scheduler
- 如何隐藏aspx文件格式,变成html
- 斯坦福Andrew Ng教授“机器学习”26篇教程全译
- java poi 读取excel(兼容03,07)
- 多进程与多线程的区别
- hive hbase整合
- 下拉菜单IE下不兼容,哪位帮忙解决下!
- PHP页面跳转几种实现方法
- HTML5与CSS3设计模式
- yum配置本地资源
- C#.net 地图控件开发(八) 地图要素Feature
- 用类求最大值
- Deep Learning 教程翻译
- 用GDB调试程序(二)