Hbase javaAPI(工具类)表的增删改查
建立连接:
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(工具类)表的增删改查的更多相关文章
- JDBC工具类 访问数据库 增删改查CRUD的通用方法
1 package com.zmh.util; 2 3 import java.sql.*; 4 import java.util.ArrayList; 5 import java.util.Hash ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- Hibernate5笔记2--单表的增删改查操作
单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...
- ORM 实现数据库表的增删改查
这次通过反射技术来实现一下数据库表的增删改查对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 注:引用时约束了以下几点: 数据 ...
- python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...
- hibernate对单表的增删改查
ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 实现对单表的增删改查 向区域表中增加数据: 第一步: 新建一个Da ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查
前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...
- 多表表与表关系 增删改查 admin
今日内容 多表表与表关系 增删改查表数据 admin 多表操作 表与表关系 默认指向主键 可能是隐藏主键 djamgo1.1默认级联(models. SET NULL解除级联) 一对一 先建立少的一方 ...
随机推荐
- Python——面向对象,类属性,静态方法,类方法
一.类属性 """类属性(Class attribute) 定义:类对象所拥有的属性,被该类的所有实列对象所共有 类对象和实例对象皆可访问类属性 应用条件:记录的某项数据 ...
- VUE中使用XLSX实现导出excel表格
简介 项目中经常会用导出数据的场景,这里介绍 VUE 中如何使用插件 xlsx 导出数据 安装 ## 1.使用 npm 或 yarn 安装依赖(三个依赖) npm install -S file-sa ...
- Erlang/Elixir精选-第6期(20200113)
精选文章 Implementing languages on the Erlang VM. -Robert Virding. 因为视频没有显示PPT,PPT可以在点击这里下载. leex - lexi ...
- js对象模型3
3
- CF547E Mike and Friends [AC自动机,离线树状数组]
#include <cstdio> #include <queue> #include <vector> #define pb emplace_back using ...
- Jean-Pierre Serre访问录
问:是什么使您以数学为职业的? 答:我记得大概是从七.八岁时起喜欢数学的.在中学里, 我常做一些高年级的题目.那时,我寄宿于Nimes,与比我大的孩子住在一起,他们常常欺侮我,为了平抚他们,我就经常帮 ...
- leetcode腾讯精选练习之旋转链表(四)
旋转链表 题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = ...
- Vue中echarts的使用
1.安装 npm install echarts --save 2. 导入并挂载 <template> <!-- 1. 为ECharts准备一个具备大小(宽高)的Dom --&g ...
- ZedGraph5.1.5源码分析去掉鼠标悬浮内容闪烁问题(附源码下载)
场景 在使用ZedGraph绘制曲线图时,将鼠标悬浮时内容闪烁,且频率很高. 找到其源码,发现不论鼠标移动的范围大小,甚至乎不论鼠标是否移动,都要刷新一次Tooltip. 注: 博客主页:https: ...
- redis中获取每个数据类型top-n的bigkeys信息
需求:之前写的脚本获取redis 最大的top-n的bigkeys,没有区分数据类型,如果要针对每个数据类型的前top-n的bigkeys获取呢? db_ip=5.5.5.101 db_port= p ...