为了方便以后查看,总结了一些常用的java操作hbase的代码:

package com.mcq;

import static org.hamcrest.CoreMatchers.describedAs;
import static org.hamcrest.CoreMatchers.nullValue; import java.io.IOException;
import java.io.PushbackInputStream; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScannable;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes; public class TestHbase {
private static Admin admin = null;
private static Connection connection = null;
private static Configuration conf = null;
static {
// HBase配置文件
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "192.168.1.103");
// 获取连接对象
try {
connection = ConnectionFactory.createConnection(conf);
// 获取HBase管理员对象
admin = connection.getAdmin();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} private static void close(Connection conn, Admin admin) throws IOException {
if (conn != null) {
conn.close();
}
if (admin != null) {
admin.close();
}
} // 判断表是否存在
public static boolean tableExist(String tableName) throws IOException {
boolean tableExists = admin.tableExists(TableName.valueOf(tableName));
return tableExists;
} // 创建表
public static void createTable(String tableName, String... cfs) throws IOException {
if (tableExist(tableName)) {
System.out.println("表已存在");
return;
}
// cfs是列族,官方建议一个表一个,但可以有多个
// 创建表描述器
HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
for (String cf : cfs) {
// 创建列描述器
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
// hColumnDescriptor.setMaxVersions(3);//设置版本数
hTableDescriptor.addFamily(hColumnDescriptor);
}
// 创建表操作
admin.createTable(hTableDescriptor);
} // 删除表
public static void deleteTable(String tableName) throws IOException {
if (!tableExist(tableName)) {
System.out.println("表不存在");
return;
}
// 使表不可用(下线)
admin.disableTable(TableName.valueOf(tableName));
// 执行删除操作
admin.deleteTable(TableName.valueOf(tableName));
System.out.println("表已删除");
} // 增、改
public static void putData(String tableName, String rowKey, String cf, String cn, String value) throws IOException {
// 获取表对象
// HTable table=new HTable(conf,TableName.valueOf(tableName)); 已过时
Table table = connection.getTable(TableName.valueOf(tableName));
// 创建put对象
Put put = new Put(Bytes.toBytes(rowKey));
// 添加数据
put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value));
// 执行添加操作
table.put(put);
} // 删
public static void delete(String tableName, String rowKey, String cf, String cn) throws IOException {
// 获取table对象
Table table = connection.getTable(TableName.valueOf(tableName));
// 创建delete对象
Delete delete = new Delete(Bytes.toBytes(rowKey));// 删除整个列族
delete.addColumns(Bytes.toBytes(cf), Bytes.toBytes(cn));// 删除所有版本
// delete.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn));不推荐,只删除最新的版本
// 执行删除操作
table.delete(delete);
table.close();
} // 查——全表扫描,只能获取最新版本
public static void scanTable(String tableName) throws IOException {
// 获取table对象
Table table = connection.getTable(TableName.valueOf(tableName));
// 构建扫描器
Scan scan = new Scan();
ResultScanner resultScanner = table.getScanner(scan); // 遍历数据并打印
for (Result result : resultScanner) { // rowkey
Cell[] cells = result.rawCells();
for (Cell cell : cells) { // cell
System.out.println("RK:" + Bytes.toString(CellUtil.cloneRow(cell)) + ",CF:"
+ Bytes.toString(CellUtil.cloneFamily(cell)) + ",CN:"
+ Bytes.toString(CellUtil.cloneQualifier(cell)) + ",VALUE:"
+ Bytes.toString(CellUtil.cloneValue(cell)));
}
}
table.close();
} // 查——获取指定列族
public static void getData(String tableName, String rowKey, String cf, String cn) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn));
// get.addFamily(cf);
// get.setMaxVersions();//不传参默认是表结构内的maxversions
get.setMaxVersions(2);
Result result = table.get(get);
Cell[] cells = result.rawCells();
for (Cell cell : cells) { // cell
System.out.println("RK:" + Bytes.toString(CellUtil.cloneRow(cell)) + ",CF:"
+ Bytes.toString(CellUtil.cloneFamily(cell)) + ",CN:"
+ Bytes.toString(CellUtil.cloneQualifier(cell)) + ",VALUE:"
+ Bytes.toString(CellUtil.cloneValue(cell)));
}
} public static void main(String[] args) throws IOException {
// 判断表是否存在
// System.out.println(tableExist("student"));
// System.out.println(tableExist("staff")); // 创建表
// createTable("staff", "info");
// System.out.println(tableExist("staff")); // 删除表
// deleteTable("staff"); // 增、改
// putData("student", "1001", "info", "name", "mcq"); // 删
// delete("student", "1001", "info", "name"); // 查——全表扫描
// scanTable("student"); //查——获取指定列族
getData("student", "1001","info","name"); // 关闭资源
close(connection, admin);
}
}

HBase常用的JAVA API操作的更多相关文章

  1. HDFS 05 - HDFS 常用的 Java API 操作

    目录 0 - 配置 Hadoop 环境(Windows系统) 1 - 导入 Maven 依赖 2 - 常用类介绍 3 - 常见 API 操作 3.1 获取文件系统(重要) 3.2 创建目录.写入文件 ...

  2. HBase学习笔记——Java API操作

    1.1.  配置 HBaseConfiguration 包:org.apache.hadoop.hbase.HBaseConfiguration 作用:通过此类可以对HBase进行配置 用法实例: C ...

  3. hadoop2-HBase的Java API操作

    Hbase提供了丰富的Java API,以及线程池操作,下面我用线程池来展示一下使用Java API操作Hbase. 项目结构如下: 我使用的Hbase的版本是 hbase-0.98.9-hadoop ...

  4. 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\

    1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...

  5. java api操作

    java api操作 导入开发包 将hbase安装包中lib下包导入java项目   创建表   Configuration conf = HBaseConfiguration.create(); c ...

  6. hive-通过Java API操作

    通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...

  7. 使用Java API操作HDFS文件系统

    使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...

  8. Kafka系列三 java API操作

    使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  9. Hadoop之HDFS(三)HDFS的JAVA API操作

    HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...

随机推荐

  1. openresty配置

    目录 环境 wsl安装 openresty安装 openssl版本问题 Lua模块安装 openresty使用 nginx常用命令 nginx.conf 配置 lua 的一些坑 OpenResty缓存 ...

  2. day66_10_10,vue项目环境搭建

    一.下载. 首先去官网查看网址. 下载vue环境之前需要先下载node,使用应用商城npm下载,可以将其下载源改成cnpm: """ node ~~ python:nod ...

  3. 使用Appium进行微信公众号自动化测试

    查看Android的webview视图版本:手机链接电脑后在电脑Chrome打开页面chrome://inspect/#devices查看Android的Chrome内核版本     下载与该版本相对 ...

  4. 【Eureka篇三】Eureka服务注册(2)

    注:修改[Rest微服务案例(二)]中的子模块microservicecloud-provider-dept-8001. 一.项目改造 1. 修改pom.xml 添加eureka client的依赖 ...

  5. 剑指Offer-12.数值的整数次方(C++/Java)

    题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   保证base和exponent不同时为0 分析: 注意base为0和expo ...

  6. pointNet代码

    介绍 组成 1.PointNet classification network分类网络 part segmentation network 数据集 1.point clouds sampled fro ...

  7. 【BZOJ3534】[SDOI2014] 重建(矩阵树定理)

    点此看题面 大致题意: 给你一张图,每条边有一定存在概率.求存在的图刚好为一棵树的概率. 矩阵树定理是什么 如果您不会矩阵树定理,可以看看蒟蒻的这篇博客:初学矩阵树定理. 矩阵树定理的应用 此题中,直 ...

  8. P2186 小Z的函数栈

    有点恶心的模拟(代码写整齐一点不就好了) 以下情况算错: 1.运行中有数的绝对值大于1000000000 2.除以和取模的时候第一个数为0 3.取栈顶元素时栈内元素不够 上代码 #include< ...

  9. A1101 Quick Sort (25 分)

    一.技术总结 这里的一个关键就是理解调换位置排序是时,如果是元主,那么它要确保的条件就只有两个一个是,自己的位置不变,还有就是前面的元素不能有比自己大的. 二.参考代码 #include<ios ...

  10. Paper | Multi-scale Dense Networks for Resource Efficient Image Classification

    目录 故事背景 方法 两种加速策略 网络设计 网络优化 失败设计 回头品味 实验 数据集和数据处理 结果 第二次阅读 本文不是第一个提出early exit思想的 写作流畅 网络回顾 其他 发表在IC ...