HBase java API访问HBase数据库

package com.hunan.hbase_options;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;import java.io.IOException;/*
DDL:
1、判断表是否存在
2、创建命名空间
3、创建命名空间
4、删除表
DML:
5、插入数据
6、查数据(get)
7、查数据(scan)
8、删除数据*/
public class HbaseDemo {private static Connection connection = null;private static Admin admin = null;static {try {//1、获取配置文件信息Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "master");//hbase-site.xml配置文件中 hbase.zookeeper.quorum 的值//2、创建连接对象connection = ConnectionFactory.createConnection(configuration);//2、获取admin对象admin = connection.getAdmin();} catch (IOException e) {e.printStackTrace();}}//判断表是否存在public static boolean isTableExist(String tableName) throws IOException {//        //1、获取配置文件信息
//        //HBaseConfiguration configuration=new HBaseConfiguration();
//        Configuration configuration = HBaseConfiguration.create();
//        configuration.set("hbase.zookeeper.quorum","master");
//        //2、获取管理员对象
//        //HBaseAdmin admin=new HBaseAdmin(configuration);
//        Connection connection = ConnectionFactory.createConnection(configuration);
//        Admin admin = connection.getAdmin();//第1步和第2步封装到static方法中//3、判断表是否存在boolean exists = admin.tableExists(TableName.valueOf(tableName));
//        //4、关闭连接
//        admin.close();//5、返回结果return exists;}//创建表public static void createTable(String tableName, String... cfs) throws IOException// ... 传参数个数不确定,可以为0{//1、判断列族信息是否存在if (cfs.length <= 0) {System.out.println("请设置列族信息");return;}//2、判断表是否存在if (isTableExist(tableName)) {System.out.println(tableName + "表已经存在");return;}//3、创建表描述器HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));//4、循环添加列族信息for (String cf : cfs) {//5、创建列族描述器HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);//6、添加具体列族hTableDescriptor.addFamily(hColumnDescriptor);}//7、创建表admin.createTable(hTableDescriptor);}//删除表public static void dropTable(String tableName) throws IOException {//1、判断表是否存在if (!isTableExist(tableName)) {System.out.println(tableName + "表不存在");return;}//2、使表下线admin.disableTable(TableName.valueOf(tableName));//3、删除表admin.deleteTable(TableName.valueOf(tableName));}//创建命名空间public static void createNameSpace(String ns) {//1、创建命名空间描述器NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(ns);NamespaceDescriptor namespaceDescriptor = builder.build();//2、创建命名空间try {admin.createNamespace(namespaceDescriptor);} catch (NamespaceExistException e){System.out.println(ns+"命名空间已经存在");} catch (IOException e) {e.printStackTrace();}}//向表插入数据public static void putData(String tableName, String rowKey, String cf,String cn,String value) throws IOException {//1.获取表对象Table table = connection.getTable(TableName.valueOf(tableName));//2.创建put对象Put put = new Put(Bytes.toBytes(rowKey));//3.给Put对象赋值put.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn),Bytes.toBytes(value));//4.插入数据table.put(put);//5.关闭表,不要放在connection中一起关闭table.close();}//6.获取数据(get)public static void getData(String tableName, String rowKey,String cf,String cn) throws IOException {//1、获取表对象Table table = connection.getTable(TableName.valueOf((tableName)));//2.创建get对象Get get=new Get(Bytes.toBytes(rowKey));//2.1 指定获取的列族//get.addFamily(Bytes.toBytes(cf));//2.2 指定获取的列族和列//get.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn));//2.3 设置获取数据的版本数//get.setMaxVersions();//默认最大版本,即获取所有版本数据//get.setMaxVersions(2);//获取最新的两个版本数据//3.获取数据Result result =table.get(get);//4.解析result数据for (Cell cell : result.rawCells()) {//5.打印数据System.out.println("CF:"+Bytes.toString(CellUtil.cloneFamily(cell))+",CN:"+Bytes.toString(CellUtil.cloneQualifier(cell))+",Value:"+Bytes.toString(CellUtil.cloneValue(cell)));}//5.关闭表连接table.close();}//获取数据(scan)public static void scanTable(String tableName) throws IOException {//1.获取表对象Table table = connection.getTable(TableName.valueOf(tableName));//2.创建Scanner对象Scan scan = new Scan();//空参扫描全表//2.1 指定rowkey范围//Scan scan=new Scan(Bytes.toBytes("002"),Bytes.toBytes("002"));//左闭右开//3.扫描表ResultScanner resultScanner = table.getScanner(scan);//4.解析表for (Result result : resultScanner) {//5.解析result并打印数据for (Cell cell : result.rawCells()) {System.out.println("CF:"+Bytes.toString(CellUtil.cloneFamily(cell))+",CN:"+Bytes.toString(CellUtil.cloneQualifier(cell))+",Value:"+Bytes.toString(CellUtil.cloneValue(cell)));}}//6.关闭表连接table.close();}//删除数据public static void deleteData(String tableName,String rowKey,String cf,String cn) throws IOException {//1.获取表Table table = connection.getTable(TableName.valueOf(tableName));//2.构建删除对象Delete delete = new Delete(Bytes.toBytes(rowKey));//2.1 设置删除的列//删除最新版本,如果添加时间戳,删除指定时间戳的版本,如果没有则不删除(不符合日常实际应用,少用)delete.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn));//添加删除标记//删除所有版本 ,如果添加时间戳。删除小于时间戳的版本delete.addColumns(Bytes.toBytes(cf),Bytes.toBytes(cn));//直接删除//2.2 设置删除的列族delete.addFamily(Bytes.toBytes(cf));//3.执行删除操作table.delete(delete);//4.关闭连接table.close();}public static void close() throws IOException {if(admin!=null){admin.close();}if(connection!=null){connection.close();}}public static void main(String[] args) throws IOException {//1、测试表是否存在//System.out.println(isTableExist("student"));//2、创建表测试//createTable("student","info1","info2");//3、删除表测试//dropTable("student");//4、创建命名空间测试//createNameSpace("0202");//createTable("0202:student","info1","info2");//(在命名空间0202上创建表)//5.表插入数据测试//putData("student","001","info1","school","whut");//6.获取单行数据(根据RowKey)//getData("student","001","info1","school");//7.测试scan表scanTable("student");//8.测试删除deleteData("student","001","info1","school");//关闭资源close();}
}

6 HBase java API访问HBase数据库相关推荐

  1. 使用 Java API 操作 HBase

    使用 Java API 操作 HBase 数据库,就类似HBase Shell,本质上一个是Java 代码,一个是Shell 命令.(hadoop 的文件系统莫不如此,可用Java API 的方式操作 ...

  2. Hbase java API操作(模板代码)

    Hbase java API操作 1 创建maven工程 导入jar包 <repositories><repository><id>cloudera</id& ...

  3. hbase java api 两种方式

    NoSQL Hbase JAVA API 实例一 导入架包: <dependency><groupId>org.apache.hbase</groupId>< ...

  4. HBase Java API 创建表时一直卡住

    场景 HBase在CentOS上分布集群安装: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119511593 在上面搭建起来H ...

  5. HBase JAVA API(大章鱼版)

    阅读前请注意: 此api中的环境为大章鱼大数据学习平台提供,非此环境,jar包,与程序代码存在一定问题.如果想本地虚拟机运行请参考分布式数据应用,进行操作 任务目标 1.了解HBase语言的基本语法 ...

  6. ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析

    ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析 . /   // datadase odbc1.cpp : 定义应用程序的入口点.  //   #inc ...

  7. Java API访问HDFS集群(HA)

    title: Java API访问HDFS集群(HA) date: 2021-06-23 17:06:11 tags: HDFS hadoopV2版本及以后都是HA架构,active namenode ...

  8. ElasticSearch 使用Java Api访问集群

    ElasticSearch 使用Java Api访问集群 1.创建maven工程导入pom依赖 <dependencies><dependency><groupId> ...

  9. Java API 访问HA模式下的HDFS集群

    在使用Hadoop Java API访问HDFS集群时,在创建FileSystem对象时,直接指定NameNode的IP以及端口号即可.但是在HA模式下,访问HDFS集群却有一些不同,需要指定Name ...

最新文章

  1. Ubuntu命令行连接wifi热点
  2. 数学建模——一维、二维插值模型详解Python代码
  3. 亲测可用centos7安装git_centos7安装git踩坑记
  4. 述说互联网1.0时代的巨头Yahoo的25年消亡史,传奇巨头落幕的故事
  5. C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它
  6. 二级菜单HTML原理,CSS多级菜单的实例代码讲解
  7. C# 中 System.Index 结构体和 Hat 运算符(^)的全新用法
  8. 计算机指令取决,不同的计算机,其指令不同,这主要取决于什么?
  9. 【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)
  10. linux用户名是什么_什么是Linux用户?
  11. Intel 64/x86_64/x86/IA-32处理器串行化指令(2) - 参考
  12. win32开发(对话框启动)
  13. MATLAB LFCM雷达调频法测距
  14. 记住没:永远不要在 MySQL 中使用 UTF-8
  15. C++ std::unordered_map怎么用
  16. python单例模式数据库连接池_Python单例模式的实现
  17. mysql 多表联合查询
  18. 计算机的方差符号怎么输入,【2人回答】标准差的符号在电脑上怎么输入?-3D溜溜网...
  19. setBackgroundResource()与setImageBitmap()以及setBackground()的使用
  20. 阿里小蜜这一年,经历了哪些技术变迁?

热门文章

  1. MFC复选框CheckBox使用 ++
  2. linux luks源码,下载源代码编译安装
  3. nginx虚拟主机解析php文件,window停nginx虚拟主机不能解析php
  4. 【Python】我的Pandas学习经历及动手实践
  5. 【Python】Python爬虫快速入门,BeautifulSoup基本使用及实践
  6. 【学术相关】研究生哪些行为可以在导师那超加分?你做到了吗?
  7. Deeplearning.ai深度学习课程笔记-在线版
  8. 网易加速5G下视频技术应用,携手南京银行数字化转型
  9. Java vs Kotlin,Android开发人员应该选择哪种语言?
  10. RESTful API 设计指南[转]