建立连接:

package Init;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*; import java.io.IOException;
public class Init {
public static Configuration configuration;//Hbase配置信息
public static Connection connection;//Hbase连接
public static Admin admin; /* public static void main (String [] agrs) throws IOException{
init();//建立连接
close();//关闭连接
}*/ public static void init()
{
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");
try{
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
}catch(IOException e){
e.printStackTrace();
}
} public static void close()
{
try{
if(admin != null) {
admin.close();
}
if (null != connection) {
connection.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}

创建表:

import java.io.IOException;
import org.apache.hadoop.hbase.*;
import java.util.Scanner; import Init .Init;
public class CreateTable {
public static void main (String [] args) throws IOException{
Scanner sc=new Scanner (System.in);
System.out.println("请输入表名:");
String tbname=sc.nextLine();//表名
System.out.println("请确定列族数:");
int n=sc.nextInt();//确定列族
String [] strArray = new String [n];
for(int i=0;i<n;i++)
{
System.out.println("请输入列族名:");
sc=new Scanner (System.in);//对sc对象初始化
String col=sc.nextLine();//列族属性
strArray[i]=col;
}
sc.close(); createTable(tbname,strArray);//建表
} public static void createTable(String myTableName,String[] colFamily) throws IOException { Init.init();//调用工具类
TableName tableName = TableName.valueOf(myTableName); if(Init.admin.tableExists(tableName)){
System.out.println("talbe is exists!");
}else {
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
for(String str:colFamily){
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str);
hTableDescriptor.addFamily(hColumnDescriptor);
}
Init.admin.createTable(hTableDescriptor);
System.out.println("create table success");
}
Init.close();
}
}

修改表(列族名或者列名):

import java.io.IOException;

import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.util.Bytes; import java.util.Scanner; import Init.Init;
public class AlterTable { public static void main(String [] args) throws IOException
{
meau();
/*Scanner sc=new Scanner(System.in);
System.out.println("请输入创建数量");
int n=sc.nextInt();
for(int i=0;i<n;i++)
{
sc=new Scanner(System.in);
System.out.println("请输入修改表名");
String tb_name=sc.nextLine();
System.out.println("请输入列族名");
String colFamily=sc.nextLine();
addColFamily(tb_name,colFamily);
}*/ //delColFamily("Score","course");
}
public static void meau() throws IOException
{
Scanner sc = new Scanner(System.in);
System.out.println("请选择:1.增加列族!!!2.删除列族!!!");
int n=sc.nextInt();
switch(n)
{
case 1:
sc=new Scanner(System.in);
System.out.println("请输入创建数量");
int a=sc.nextInt();
for(int i=0;i<a;i++)
{
sc=new Scanner(System.in);
System.out.println("请输入修改表名");
String tb_name=sc.nextLine();
System.out.println("请输入列族名");
String colFamily=sc.nextLine();
addColFamily(tb_name,colFamily);
}; case 2:
sc=new Scanner(System.in);
System.out.println("请输入删除数量");
int b=sc.nextInt();
for(int i=0;i<b;i++)
{
sc=new Scanner(System.in);
System.out.println("请输入修改表名");
String tb_name=sc.nextLine();
System.out.println("请输入列族名");
String colFamily=sc.nextLine();
delColFamily(tb_name,colFamily);
}; }
} public static void addColFamily(String tableName, String colFamily)throws IOException
{
Init.init();
TableName tablename=TableName.valueOf(tableName);
//判断表是否存在
if (Init.admin.tableExists(tablename)) {
try {
Init.admin.disableTable(tablename);
HTableDescriptor tb_des = Init.admin.getTableDescriptor (tablename ); //获取表的描述
HColumnDescriptor newcol = new HColumnDescriptor( colFamily );//创建列族添加对象;为添加对象赋值
tb_des.addFamily(newcol);//添加列族
Init.admin.modifyTable(tablename, tb_des);
Init. admin.enableTable(tablename);
System.out.println(colFamily+"创建成功");
Init.close();
System.out.println("是否继续修改:1.继续修改!!!2.退出!!!");
Scanner sc=new Scanner(System.in);
int n =sc. nextInt();
if(n==1)
{
meau();
}
else
{
System.out.println("谢谢使用");
}
}catch (Exception e) {
// TODO : handle exception
e.printStackTrace();
}
}
} public static void delColFamily(String tableName, String colFamily)throws IOException
{
Init.init();
TableName tablename=TableName.valueOf(tableName);
//判断表是否存在
if (Init.admin.tableExists(tablename)) {
try {
Init.admin.disableTable(tablename);
HTableDescriptor tb_des = Init.admin.getTableDescriptor (tablename ); //获取表的描述
tb_des.removeFamily(Bytes. toBytes (colFamily ));
Init.admin.modifyTable(tablename, tb_des);
Init. admin.enableTable(tablename);
System.out.println(colFamily+"删除成功");
Init.close();
System.out.println("是否继续修改:1.继续修改!!!2.退出!!!");
Scanner sc=new Scanner(System.in);
int n =sc. nextInt();
if(n==1)
{
meau();
}
else
{
System.out.println("谢谢使用");
}
}catch (Exception e) {
// TODO : handle exception
e.printStackTrace();
}
}
} }

列出所有表:

import java.io.IOException;

import org.apache.hadoop.hbase.HTableDescriptor;

import Init.Init;
public class ListTable {
public static void main(String [] args) throws IOException
{
listTable();
}
public static void listTable() throws IOException {
Init.init();
HTableDescriptor hTableDescriptors[] = Init.admin.listTables();
for(HTableDescriptor hTableDescriptor :hTableDescriptors){
System.out.println(hTableDescriptor.getNameAsString());
}
Init. close();
}
}

添加数据:

import java.io.IOException;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import java.util.Scanner;
import Init.Init; public class InsertData {
public static void main( String [] args ) throws IOException
{
Scanner sc=new Scanner(System.in);
System.out.println("请确定添加数量:");
int n =sc.nextInt();//确定添加数量 for(int i= 0;i<n;i++)
{
sc=new Scanner(System.in);//初始化sc
System.out.println("请输入添加数据的表名:");
String tb_Name=sc.nextLine();//选择表
System.out.println("请输入行键:");
String tb_rowKey=sc.nextLine();
System.out.println("请输入列族:");
String tb_colFamily=sc.nextLine();
System.out.println("请输入列:");
String tb_col=sc.nextLine();
System.out.println("请输入数据:");
String tb_val=sc.nextLine(); insertData(tb_Name,tb_rowKey,tb_colFamily,tb_col,tb_val);//添加数据
}
sc.close();
} public static void insertData(String tableName, String rowKey, String colFamily, String col, String val) throws IOException {
Init.init();
Table table = Init.connection.getTable(TableName.valueOf(tableName));
Put put = new Put(rowKey.getBytes());
put.addColumn(colFamily.getBytes(),col.getBytes(),val.getBytes());
table.put(put);
table.close();
System.out.println("数据添加成功!");
Init.close();
}
}

删除数据:

import java.io.IOException;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*; import java.util.Scanner;
import Init.Init;
public class DelData {
public static void main(String [] args) throws IOException
{
Scanner sc=new Scanner(System.in);
System.out.println("请确定删除数量:");
int n =sc.nextInt();//确定添加数量 for(int i= 0;i<n;i++)
{
sc=new Scanner(System.in);//初始化sc
System.out.println("请输入删除数据的表名:");
String tb_Name=sc.nextLine();//选择表
System.out.println("请输入行键:");
String tb_rowKey=sc.nextLine();
System.out.println("请输入列族:");
String tb_colFamily=sc.nextLine();
System.out.println("请输入列:");
String tb_col=sc.nextLine(); deleteData(tb_Name,tb_rowKey,tb_colFamily,tb_col);//添加数据
}
sc.close();
} public static void deleteData(String tableName,String rowKey,String colFamily,String col) throws IOException {
Init. init();
Table table = Init.connection.getTable(TableName.valueOf(tableName));
Delete delete = new Delete(rowKey.getBytes());
// 删除指定列族的所有数据
delete.addFamily(colFamily.getBytes());
//删除指定列的数据
delete.addColumn(colFamily.getBytes(), col.getBytes()); table.delete(delete);
table.close();
System.out.println("删除成功");
Init.close();
}
}

Get获取单个数据:

import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
import java.util.Scanner; import Init.Init;
public class GetData {
public static void main(String [] args) throws IOException
{
Scanner sc=new Scanner (System.in);
System.out.println("请输入查找数量:");
int n = sc.nextInt();
for(int i=0;i<n;i++)
{
sc=new Scanner(System.in);//sc对象初始化
System.out.println("请输入查找表名:");
String tb_Name=sc.nextLine();
System.out.println("请输入行键:");
String tb_rowKey=sc.nextLine();
System.out.println("请输入列族:");
String tb_colFamily=sc.nextLine();
System.out.println("请输入列:");
String tb_col=sc.nextLine();
getData(tb_Name,tb_rowKey,tb_colFamily,tb_col);
}
sc.close();
} public static void getData(String tableName,String rowKey,String colFamily,String col)throws IOException
{
Init.init();
Table table =Init. connection.getTable(TableName.valueOf(tableName));
Get get = new Get(rowKey.getBytes());
get.addColumn(colFamily.getBytes(),col.getBytes());
Result result = table.get(get);//返回到结果集
// showCell(result);
Cell[] cells = result.rawCells();
for(Cell cell:cells)
{
System.out.println("行键:"+new String(CellUtil.cloneRow(cell))+" ");
// System.out.println("Timetamp:"+cell.getTimestamp()+" ");
System.out.println(" 列族:"+new String(CellUtil.cloneFamily(cell))+" ");
System.out.println(" 列:"+new String(CellUtil.cloneQualifier(cell))+" ");
System.out.println("数据:"+new String(CellUtil.cloneValue(cell))+" ");
table.close();
Init. close();
}
}
}
//将结果集的值遍历输出
/*public static void showCell(Result result){
Cell[] cells = result.rawCells();
for(Cell cell:cells){
System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
System.out.println("Timetamp:"+cell.getTimestamp()+" ");
System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
}
}*/

Scan获取所有数据:

import java.io.IOException;

import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.TableName;
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 java.util.Scanner; import Init.Init;
public class ScanData {
public static void main(String [] args) throws IOException
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入查询表的数量");
int n=sc.nextInt();
for(int i=0;i<n;i++)
{
sc=new Scanner(System.in);
System.out.println("请输入查询的表名");
String tb_name=sc.nextLine();
scanData(tb_name);
}
sc.close();
} public static void scanData(String tableName)throws IOException
{ Scan scan = new Scan();
//scan.addColumn(Bytes.toBytes(""),Bytes.toBytes("")); 添加列族;列的约束查询
Init.init();
Table table = Init.connection.getTable(TableName.valueOf(tableName));
ResultScanner resultScanner = table.getScanner(scan);
Result rs = resultScanner.next();
for (; rs != null;rs = resultScanner.next()){
for (KeyValue kv : rs.list()){
System.out.println("--------------");
System.out.println("行键:"+ new String(kv.getRow()));
System.out.println("列族: "+ new String(kv.getFamily()));
System.out.println("列 :" + new String(kv.getQualifier ()));
System.out.println("数值 :"+ new String(kv.getValue()));
}
} }
}

Hbase javaAPI(工具类)表的增删改查的更多相关文章

  1. JDBC工具类 访问数据库 增删改查CRUD的通用方法

    1 package com.zmh.util; 2 3 import java.sql.*; 4 import java.util.ArrayList; 5 import java.util.Hash ...

  2. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  3. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  4. Hibernate5笔记2--单表的增删改查操作

    单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...

  5. ORM 实现数据库表的增删改查

    这次通过反射技术来实现一下数据库表的增删改查对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 注:引用时约束了以下几点: 数据 ...

  6. python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)

    day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...

  7. hibernate对单表的增删改查

    ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 实现对单表的增删改查 向区域表中增加数据: 第一步: 新建一个Da ...

  8. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  9. C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查

    前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...

  10. 多表表与表关系 增删改查 admin

    今日内容 多表表与表关系 增删改查表数据 admin 多表操作 表与表关系 默认指向主键 可能是隐藏主键 djamgo1.1默认级联(models. SET NULL解除级联) 一对一 先建立少的一方 ...

随机推荐

  1. redis中key键操作

    keys */查看所有的key remoteSelf:1>select 0 "OK" remoteSelf:0>keys * 1) "SUBCRIBEMAP& ...

  2. html文件如何下载文件

    HTML中下载文件两种方法:a标签下载:js下载; <!-- 网页地址和图片地址同源的情况下这样是可以的,不同源则是直接打开这个地址 --> <!-- 方法一:同源情况下载 --&g ...

  3. Linux动态DMA映射

    1. 几种地址类型 虚拟地址 Linux内核使用的地址是虚拟地址,数据类型为void *.例如,kmalloc()和vmalloc()函数返回值就是虚拟地址. 物理地址 处理器真实地址总线上的地址,数 ...

  4. Ubuntu安装软件时报 Unable to acquire the dpkg frontend lock解决方案

    解决方案如下: 对于以上内容,请等待过程完成.如果这没有发生,请在终端中运行: sudo killall apt apt-get 如果以上都不起作用,请删除锁定文件.在终端中运行: sudo rm / ...

  5. 【python基础语法】函数的作用域和内置函数和关键字(第7天课堂笔记)

    一.函数的作用域: 1.全局变量 2.局部变量 3.global 二.内置函数 1.常见的内置函数 print : 输出 input : 输入 type : 查看数据类型 id : 获取数据的内存地址 ...

  6. win10自带邮箱如何使用?win10自带邮箱如何同步qq邮箱邮件?

    win10自带邮箱如何使用? 相信很多小伙伴在登录win10自带的邮箱登录QQ邮箱时,显示同步失败或者登录超时,但又找不到相关的资料,下面是我自己邮箱的操作流程,小伙伴可以尝试一下,有什么问题留言即可 ...

  7. nvm Nodejs 版本管理器 安装及配置

    1.如果已安装nodejs请先卸载干净 nodejs:删除C:\Program Files\nodejs 文件夹 npm:删除C:\Users\{用户名}\AppData\Roaming\npm 文件 ...

  8. Wannafly Winter Camp 2020 Day 6J K重排列 - dp

    求 \(K\) 是多少个 \(n\) 元置换的周期.\(T\leq 100, n\leq 50, K \leq 10^{18}\) Solution 置换可以被试做若干个环组成的有向图,于是考虑 dp ...

  9. Wannafly Winter Camp 2020 Day 5F Inversion Pairs - 拉格朗日插值,dp

    给定 \(n \leq 10^7\),求所有 \(n\) 的全排列的逆序对个数的 \(k \leq 100\) 次方和 Solution \(f[i][j]\) 表示 \(i\) 个元素,逆序对个数为 ...

  10. Hibernate注释

    Hibernate注释映射一.PO类的基本注释1.@Entity:将pojo类标记成实体,可以指定一个name属性,指定实体类的名称.默认一该类的类名作为实体类的名称 2.@Table:注释改持久化类 ...