hbase与hive关联、插入数据

接上一篇文章hbase的基本操作,做进一步深入。细想一下,使用put命令插入数据到hbase,使用get方法从hbase读取数据还是有诸多不方便。显然,NO SQL数据库在某些操作上还是没有支持SQL的数据库更加便捷。那么,是否可以将hbase与什么关联一下,既支持hbase的NO SQL又保留SQL的一些特性?答案是hbase与hive关联可以实现上述需求。

如何关联

关联前,先创建hbase表,而后创hive关联hbase表。这是因为,创hive关联hbase表时候,会检查关联的hbase表是否存在,也会检查hive字段与hbase的列值对应关系是否能成立(简单来说,会检查hbase的列族,列是否存在)。关联表时需注意’hbase.columns.mapping’这个值,此值与hive的字段自上而下一一对应。一般来说,hive的第一行为主键,对应到hbase为”key”。另外一个注意点是’hbase.table.name’后需填写hbase的表名。

create external table test.hbase_test(
key string, 
column_1 string, 
column_2 string,
column_3 string,
column_4 string,
column_5 string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with
serdeproperties('hbase.columns.mapping'=':key,column_family_1:column_1,column_family_1:column_2,column_family_2:column_3,column_family_2:column_4,column_family_3:column_family_3')
tblproperties('hbase.table.name'='hbase_test');

以上,创建了一张hive表test.hbase_test并与已创建的hbase表关联hbase_test

关联表后,hbase的NO SQL操作依旧,具体就不介绍了,参考上一篇文章hbase的基本操作。同时,也具有一些HIVE SQL的特性。比如,插入数据的方式丰富了(需注意,hive表插入数据时,不支持指定字段,故插入时不可指定字段。否则,执行时会报错):

insert into test.hbase_test values('key_100', 'value100', 'value100', 'value100', 'value100', 'value100');

若需插入多条数据:

insert into test.hbase_test values('key_101', 'value101', 'value101', 'value101', 'value101', 'value101'),('key_102', 'value102', 'value102', 'value102', 'value102', 'value102'),('key_103', 'value103', 'value103', 'value103', 'value103', 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值