概述
HBase常见的场景
1. 半结构化或非结构化数据
2. 多版本数据
3. 数据需要长久存储,而且数据持续增加
场景:
对契约的客户信息进行分类,比如客户基本属性(年龄,性别,身份证等),客户附加属性(比如学校,公司等),客户关系等,并且要求做到实时查询,此时我们可以使用HBase来处理。
方案:
使用Sqoop将Oracle中的客户信息数据按照要求的属性进行分类,并导入到HBase表的指定列族(每个列族就当做一个标签)中,查询一个客户信息的一个标签数据时,就只会查询指定的列族数据而不是查询其他列族数据,提升查询性能。
实践:
1. 首先在HBase中创建client_info表,同时指定三个标签
create 'customer_info','level1','level2','level3'
2. 导入客户信息到标签中
标签1
sqoop import -D mapred.job.queue.name=root.myqueue
--connect jdbc:oracle:thin:@192.168.1.128:1526:mydbs
--table mys.customer_info
--column-family "level1"
--columns DEPTNO,CUSTOMERNO,CUSTOMER_NAME
--hbase-row-key CUSTOMERNO
--hbase-table customer_info
-m 1
--username jsz
--password 123456
标签2
sqoop import -D mapred.job.queue.name=root.myqueue
--connect jdbc:oracle:thin:@192.168.1.128:1526:mydbs
--table mys.customer_info
--column-family "level2"
--columns CUSTOMERNO,FOUND_DATE,NATIONAL,SSL
--hbase-row-key CUSTOMERNO
--hbase-table customer_info
-m 1
--username jsz
--password 123456
标签3
sqoop import -D mapred.job.queue.name=root.myqueue
--connect jdbc:oracle:thin:@192.168.1.128:1526:mydbs
--table mys.customer_info
--column-family "level3"
--columns CUSTOMERNO,RLL,ORR
--hbase-row-key CUSTOMERNO
--hbase-table customer_info
-m 1
--null-string '\N'
--null-non-string '\N'
--username jsz
--password 123456
3. 查询HBase中的方式
第一种方式:HBase Shell方式
[hdfs@CDHA ~]$ hbase shell
HBase Shell; enter 'help<RETURN>' forlist of supported commands.
Type "exit<RETURN>" toleave the HBase Shell
Version 1.2.0-cdh5.7.0, rUnknown, Wed Mar23 11:39:14 PDT 2016
hbase(main):001:0> get 'customer_info','1000033056'
第二种方式:通过Hue页面访问
第三种方式:通过Java代码访问HBase里面的数据
package com.zhangyun.hbase;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
public class MyGet {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/*
* 设置HBase的基本配置信息
*/
Configuration conf = HBaseConfiguration.create();
conf.set("HADOOP_HOME", "D:\iangshouzhuang\hadoop-2.6.0");
conf.set("hbase.zookeeper.quorum", "192.168.1.128,192.168.1.129,192.168.1.130");
conf.set("hbase.zookeeper.property.clientPort", "2181");
HTable htable = new HTable(conf, "customer_info");
// 获取指定行键数据
Get get = new Get(Bytes.toBytes("1000033056"));
get.setMaxVersions(3);
System.err.println("Begin.............");
Result rs = htable.get(get);
//指定列族和列
byte[] found_date =rs.getValue(Bytes.toBytes("level2"),Bytes.toBytes("FOUND_DATE "));
byte[] national =rs.getValue(Bytes.toBytes("level2"),Bytes.toBytes("NATIONAL"));
byte[] ssl =rs.getValue(Bytes.toBytes("level2"),Bytes.toBytes("SSL"));
String fd = Bytes.toString(found_date);
String na = Bytes.toString(national);
String sl = Bytes.toString(ssl);
System.out.println("FOUND_DATE:" + fd + " NATIONAL:" + na + " SSL:" + sl);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.err.println("End.............");
}
}
最后
以上就是包容棉花糖为你收集整理的HBase在标签方面的应用的全部内容,希望文章能够帮你解决HBase在标签方面的应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复