环境准备

新建项目后在pom.xml中添加依赖:

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.</version>
</dependency> <dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.</version>
</dependency> <dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

HBaseAPI

获取Configuration对象

public static Configuration conf;

static{

//使用HBaseConfiguration的单例方法实例化

conf = HBaseConfiguration.create();

conf.set("hbase.zookeeper.quorum", "192.168.9.102");

conf.set("hbase.zookeeper.property.clientPort", "2181");

}

判断表是否存在

public static boolean isTableExist(String tableName) throws MasterNotRunningException,

ZooKeeperConnectionException, IOException{

//在HBase中管理、访问表需要先创建HBaseAdmin对象

//Connection connection = ConnectionFactory.createConnection(conf);

//HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();

HBaseAdmin admin = new HBaseAdmin(conf);

return admin.tableExists(tableName);

}

创建表

public static void createTable(String tableName, String... columnFamily) throws

MasterNotRunningException, ZooKeeperConnectionException, IOException{

HBaseAdmin admin = new HBaseAdmin(conf);

//判断表是否存在

if(isTableExist(tableName)){

System.out.println("表" + tableName + "已存在");

//System.exit(0);

}else{

//创建表属性对象,表名需要转字节

HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(tableName));

//创建多个列族

for(String cf : columnFamily){

descriptor.addFamily(new HColumnDescriptor(cf));

}

//根据对表的配置,创建表

admin.createTable(descriptor);

System.out.println("表" + tableName + "创建成功!");

}

}

删除表

public static void dropTable(String tableName) throws MasterNotRunningException,

ZooKeeperConnectionException, IOException{

HBaseAdmin admin = new HBaseAdmin(conf);

if(isTableExist(tableName)){

admin.disableTable(tableName);

admin.deleteTable(tableName);

System.out.println("表" + tableName + "删除成功!");

}else{

System.out.println("表" + tableName + "不存在!");

}

}

向表中插入数据

public static void addRowData(String tableName, String rowKey, String columnFamily, String

column, String value) throws IOException{

//创建HTable对象

HTable hTable = new HTable(conf, tableName);

//向表中插入数据

Put put = new Put(Bytes.toBytes(rowKey));

//向Put对象中组装数据

put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));

hTable.put(put);

hTable.close();

System.out.println("插入数据成功");

}

删除多行数据

public static void deleteMultiRow(String tableName, String... rows) throws IOException{

HTable hTable = new HTable(conf, tableName);

List<Delete> deleteList = new ArrayList<Delete>();

for(String row : rows){

Delete delete = new Delete(Bytes.toBytes(row));

deleteList.add(delete);

}

hTable.delete(deleteList);

hTable.close();

}

6.2.7 获取所有数据

public static void getAllRows(String tableName) throws IOException{

HTable hTable = new HTable(conf, tableName);

//得到用于扫描region的对象

Scan scan = new Scan();

//使用HTable得到resultcanner实现类的对象

ResultScanner resultScanner = hTable.getScanner(scan);

for(Result result : resultScanner){

Cell[] cells = result.rawCells();

for(Cell cell : cells){

//得到rowkey

System.out.println("行键:" + Bytes.toString(CellUtil.cloneRow(cell)));

//得到列族

System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));

System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));

System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));

}

}

}

6.2.8 获取某一行数据

public static void getRow(String tableName, String rowKey) throws IOException{

HTable table = new HTable(conf, tableName);

Get get = new Get(Bytes.toBytes(rowKey));

//get.setMaxVersions();显示所有版本

//get.setTimeStamp();显示指定时间戳的版本

Result result = table.get(get);

for(Cell cell : result.rawCells()){

System.out.println("行键:" + Bytes.toString(result.getRow()));

System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));

System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));

System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));

System.out.println("时间戳:" + cell.getTimestamp());

}

}

6.2.9 获取某一行指定“列族:列”的数据

public static void getRowQualifier(String tableName, String rowKey, String family, String

qualifier) throws IOException{

HTable table = new HTable(conf, tableName);

Get get = new Get(Bytes.toBytes(rowKey));

get.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier));

Result result = table.get(get);

for(Cell cell : result.rawCells()){

System.out.println("行键:" + Bytes.toString(result.getRow()));

System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));

System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));

System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));

}

}

HBaseAPI的更多相关文章

  1. HBase Shell手动移动Region

    在生产环境中很有可能有那么几个Region比较大,但是都运行在同一个Regionserver中. 这个时候就需要手动将region移动到负载低的Regionserver中. 步骤: 1.找到要移动的r ...

  2. 1、Spark 通过api,hfile两种形式获取hbase数据,简单样例

    pom内容: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-se ...

  3. UDP接收百万级数据的解决方案

    小序 到新公司不久,就接到一个任务:有个发送方,会通过udp发送一些信息,然后服务接收到信息后保存到数据库的一张表A,保存的这些数据在经过一系列处理,处理完成后累积到另一张表B,然后清空处理的表A的数 ...

  4. 记一次Hbase查询速度优化经历

    项目背景: 在这次影像系统中,我们利用大数据平台做的是文件(图片.视频等)批次的增删改查,每个批次都包含多个文件,上传完成以后要添加文件索引(文件信息及批次信息),由于在Hbase存储的过程中,每个文 ...

  5. Hbase java api

    export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1export ...

  6. HBase的Shell命令和JavaAPI

    HBase的shell操作和JavaAPI的使用: Shell 表操作 创建表 create 'student','info' #表名 列族 插入表 put 'student','1001','inf ...

  7. 大数据入门第十四天——Hbase详解(二)基本概念与命令、javaAPI

    一.hbase数据模型 完整的官方文档的翻译,参考:https://www.cnblogs.com/simple-focus/p/6198329.html 1.rowkey 与nosql数据库们一样, ...

  8. 快速理解 Phoenix : SQL on HBASE

    转自:http://blog.csdn.net/colorant/article/details/8645081 ==是什么 == 目标Scope EasyStandard SQL access on ...

  9. 大数据分析系统Hadoop的13个开源工具

    Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究而来. 用户可以在不了解分布式底层细节的 ...

随机推荐

  1. 带有连接池的Http客户端工具类HttpClientUtil

    一.背景 业务开发中,经常会遇到通过http/https向下游服务发送请求.每次都要重复造轮子写HttpClient的逻辑,而且性能.功能参差不齐.这里分享一个高性能的.带连接池的通用Http客户端工 ...

  2. 企业应用向ASP.NET Core迁移

    有人说.NET在国内的氛围越来越不行了,看博客园文章的浏览量也起不来.是不是要转Java呢? 没有必要扯起语言的纷争,Java也好C#都只是语言是工具,各有各的使用场景.以前是C#非开源以及不能在Li ...

  3. c# 在DataTable的第一列(指定列)的前面添加一列

    c# 在DataTable的第一列(指定列)的前面添加一列 dt.Columns.Add("ID").SetOrdinal(0)  

  4. 用Autofac替换.net core 内置容器

    官方建议使用内置容器,但有些功能并不支持,如下: 属性注入 基于名称的注入 子容器 自定义生存期管理 Func<T> 支持 所以可以使用其他第三方IOC容器,如Autofac,下面为学习使 ...

  5. torch_02_多项式回归

    """ torch.float64对应torch.DoubleTensor torch.float32对应torch.FloatTensor 将真实函数的数据点能够拟合成 ...

  6. sort和sorted

    sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 ...

  7. Linux操作USB手柄

    Linux控制原理 Linux C控制JoyStick的比较简单,首先在JoyStick在Linux 安装好驱动后会在/dev/input生成js0.对其设备控制,就是读取相应的结构来判断用户输入哪一 ...

  8. CentOS 安装libgdi的方法

    1. 安装必须的包 yum install glib2-devel cairo-devel libjpeg-turbo-devel-1.2.90-8.el7.x86_64 libtiff-devel- ...

  9. Python程序调试工具Py-Spy

    序言 如果你是从Java语言开发转Python开发,可能在庆幸自己的开发效率提高了很多,但是也有痛苦的时候,比如你会怀念jstack,jmap, 等各种工具在生产环境做perfomance tunin ...

  10. 2019-11-29-C#-反射调用私有事件

    原文:2019-11-29-C#-反射调用私有事件 title author date CreateTime categories C# 反射调用私有事件 lindexi 2019-11-29 08: ...