Hbase javaAPI(工具类)表的增删改查

建立连接:

1package Init; 2 3import org.apache.hadoop.conf.Configuration; 4import org.apache.hadoop.hbase.*; 5import org.apache.hadoop.hbase.client.*; 6 7import java.io.IOException; 8public class Init { 9 public static Configuration configuration;//Hbase配置信息 10 public static Connection connection;//Hbase连接 11 public static Admin admin; 12 13/* public static void main (String [] agrs) throws IOException{ 14 init();//建立连接 15 close();//关闭连接 16 }*/ 17 18 public static void init() 19 { 20 configuration = HBaseConfiguration.create(); 21 configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase"); 22 try{ 23 connection = ConnectionFactory.createConnection(configuration); 24 admin = connection.getAdmin(); 25 }catch(IOException e){ 26 e.printStackTrace(); 27 } 28 } 29 30 public static void close() 31 { 32 try{ 33 if(admin != null) { 34 admin.close(); 35 } 36 if (null != connection) { 37 connection.close(); 38 } 39 }catch (IOException e) { 40 e.printStackTrace(); 41 } 42 } 43}

创建表:

1import java.io.IOException; 2import org.apache.hadoop.hbase.*; 3import java.util.Scanner; 4 5import Init .Init; 6public class CreateTable { 7 public static void main (String [] args) throws IOException{ 8 Scanner sc=new Scanner (System.in); 9 System.out.println("请输入表名:"); 10 String tbname=sc.nextLine();//表名 11 System.out.println("请确定列族数:"); 12 int n=sc.nextInt();//确定列族 13 String [] strArray = new String [n]; 14 for(int i=0;i<n;i++) 15 { 16 System.out.println("请输入列族名:"); 17 sc=new Scanner (System.in);//对sc对象初始化 18 String col=sc.nextLine();//列族属性 19 strArray[i]=col; 20 } 21 sc.close(); 22 23 createTable(tbname,strArray);//建表 24 } 25 26 public static void createTable(String myTableName,String[] colFamily) throws IOException { 27 28 Init.init();//调用工具类 29 TableName tableName = TableName.valueOf(myTableName); 30 31 if(Init.admin.tableExists(tableName)){ 32 System.out.println("talbe is exists!"); 33 }else { 34 HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName); 35 for(String str:colFamily){ 36 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str); 37 hTableDescriptor.addFamily(hColumnDescriptor); 38 } 39 Init.admin.createTable(hTableDescriptor); 40 System.out.println("create table success"); 41 } 42 Init.close(); 43 } 44}

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

1import java.io.IOException; 2 3import org.apache.hadoop.hbase.HColumnDescriptor; 4import org.apache.hadoop.hbase.HTableDescriptor; 5import org.apache.hadoop.hbase.TableName; 6import org.apache.hadoop.hbase.util.Bytes; 7 8import java.util.Scanner; 9 10import Init.Init; 11public class AlterTable { 12 13 public static void main(String [] args) throws IOException 14 { 15 meau(); 16 /*Scanner sc=new Scanner(System.in); 17 System.out.println("请输入创建数量"); 18 int n=sc.nextInt(); 19 for(int i=0;i<n;i++) 20 { 21 sc=new Scanner(System.in); 22 System.out.println("请输入修改表名"); 23 String tb_name=sc.nextLine(); 24 System.out.println("请输入列族名"); 25 String colFamily=sc.nextLine(); 26 addColFamily(tb_name,colFamily); 27 }*/ 28 29 //delColFamily("Score","course"); 30 } 31 public static void meau() throws IOException 32 { 33 Scanner sc = new Scanner(System.in); 34 System.out.println("请选择:1.增加列族!!!2.删除列族!!!"); 35 int n=sc.nextInt(); 36 switch(n) 37 { 38 case 1: 39 sc=new Scanner(System.in); 40 System.out.println("请输入创建数量"); 41 int a=sc.nextInt(); 42 for(int i=0;i<a;i++) 43 { 44 sc=new Scanner(System.in); 45 System.out.println("请输入修改表名"); 46 String tb_name=sc.nextLine(); 47 System.out.println("请输入列族名"); 48 String colFamily=sc.nextLine(); 49 addColFamily(tb_name,colFamily); 50 }; 51 52 case 2: 53 sc=new Scanner(System.in); 54 System.out.println("请输入删除数量"); 55 int b=sc.nextInt(); 56 for(int i=0;i<b;i++) 57 { 58 sc=new Scanner(System.in); 59 System.out.println("请输入修改表名"); 60 String tb_name=sc.nextLine(); 61 System.out.println("请输入列族名"); 62 String colFamily=sc.nextLine(); 63 delColFamily(tb_name,colFamily); 64 }; 65 66 } 67 } 68 69 public static void addColFamily(String tableName, String colFamily)throws IOException 70 { 71 Init.init(); 72 TableName tablename=TableName.valueOf(tableName); 73 //判断表是否存在 74 if (Init.admin.tableExists(tablename)) { 75 try { 76 Init.admin.disableTable(tablename); 77 HTableDescriptor tb_des = Init.admin.getTableDescriptor (tablename ); //获取表的描述 78 HColumnDescriptor newcol = new HColumnDescriptor( colFamily );//创建列族添加对象;为添加对象赋值 79 tb_des.addFamily(newcol);//添加列族 80 Init.admin.modifyTable(tablename, tb_des); 81 Init. admin.enableTable(tablename); 82 System.out.println(colFamily+"创建成功"); 83 Init.close(); 84 System.out.println("是否继续修改:1.继续修改!!!2.退出!!!"); 85 Scanner sc=new Scanner(System.in); 86 int n =sc. nextInt(); 87 if(n==1) 88 { 89 meau(); 90 } 91 else 92 { 93 System.out.println("谢谢使用"); 94 } 95 }catch (Exception e) { 96 // TODO : handle exception 97 e.printStackTrace(); 98 } 99 } 100 } 101 102 public static void delColFamily(String tableName, String colFamily)throws IOException 103 { 104 Init.init(); 105 TableName tablename=TableName.valueOf(tableName); 106 //判断表是否存在 107 if (Init.admin.tableExists(tablename)) { 108 try { 109 Init.admin.disableTable(tablename); 110 HTableDescriptor tb_des = Init.admin.getTableDescriptor (tablename ); //获取表的描述 111 tb_des.removeFamily(Bytes. toBytes (colFamily )); 112 Init.admin.modifyTable(tablename, tb_des); 113 Init. admin.enableTable(tablename); 114 System.out.println(colFamily+"删除成功"); 115 Init.close(); 116 System.out.println("是否继续修改:1.继续修改!!!2.退出!!!"); 117 Scanner sc=new Scanner(System.in); 118 int n =sc. nextInt(); 119 if(n==1) 120 { 121 meau(); 122 } 123 else 124 { 125 System.out.println("谢谢使用"); 126 } 127 }catch (Exception e) { 128 // TODO : handle exception 129 e.printStackTrace(); 130 } 131 } 132 } 133 134 135}

列出所有表:

1import java.io.IOException; 2 3import org.apache.hadoop.hbase.HTableDescriptor; 4 5import Init.Init; 6public class ListTable { 7 public static void main(String [] args) throws IOException 8 { 9 listTable(); 10 } 11 public static void listTable() throws IOException { 12 Init.init(); 13 HTableDescriptor hTableDescriptors[] = Init.admin.listTables(); 14 for(HTableDescriptor hTableDescriptor :hTableDescriptors){ 15 System.out.println(hTableDescriptor.getNameAsString()); 16 } 17 Init. close(); 18 } 19}

添加数据:

1import java.io.IOException; 2import org.apache.hadoop.hbase.*; 3import org.apache.hadoop.hbase.client.*; 4import java.util.Scanner; 5import Init.Init; 6 7public class InsertData { 8 public static void main( String [] args ) throws IOException 9 { 10 Scanner sc=new Scanner(System.in); 11 System.out.println("请确定添加数量:"); 12 int n =sc.nextInt();//确定添加数量 13 14 for(int i= 0;i<n;i++) 15 { 16 sc=new Scanner(System.in);//初始化sc 17 System.out.println("请输入添加数据的表名:"); 18 String tb_Name=sc.nextLine();//选择表 19 System.out.println("请输入行键:"); 20 String tb_rowKey=sc.nextLine(); 21 System.out.println("请输入列族:"); 22 String tb_colFamily=sc.nextLine(); 23 System.out.println("请输入列:"); 24 String tb_col=sc.nextLine(); 25 System.out.println("请输入数据:"); 26 String tb_val=sc.nextLine(); 27 28 insertData(tb_Name,tb_rowKey,tb_colFamily,tb_col,tb_val);//添加数据 29 } 30 sc.close(); 31 } 32 33 public static void insertData(String tableName, String rowKey, String colFamily, String col, String val) throws IOException { 34 Init.init(); 35 Table table = Init.connection.getTable(TableName.valueOf(tableName)); 36 Put put = new Put(rowKey.getBytes()); 37 put.addColumn(colFamily.getBytes(),col.getBytes(),val.getBytes()); 38 table.put(put); 39 table.close(); 40 System.out.println("数据添加成功!"); 41 Init.close(); 42 } 43}

删除数据:

1import java.io.IOException; 2import org.apache.hadoop.hbase.*; 3import org.apache.hadoop.hbase.client.*; 4 5import java.util.Scanner; 6import Init.Init; 7public class DelData { 8 public static void main(String [] args) throws IOException 9 { 10 Scanner sc=new Scanner(System.in); 11 System.out.println("请确定删除数量:"); 12 int n =sc.nextInt();//确定添加数量 13 14 for(int i= 0;i<n;i++) 15 { 16 sc=new Scanner(System.in);//初始化sc 17 System.out.println("请输入删除数据的表名:"); 18 String tb_Name=sc.nextLine();//选择表 19 System.out.println("请输入行键:"); 20 String tb_rowKey=sc.nextLine(); 21 System.out.println("请输入列族:"); 22 String tb_colFamily=sc.nextLine(); 23 System.out.println("请输入列:"); 24 String tb_col=sc.nextLine(); 25 26 deleteData(tb_Name,tb_rowKey,tb_colFamily,tb_col);//添加数据 27 } 28 sc.close(); 29 } 30 31 public static void deleteData(String tableName,String rowKey,String colFamily,String col) throws IOException { 32 Init. init(); 33 Table table = Init.connection.getTable(TableName.valueOf(tableName)); 34 Delete delete = new Delete(rowKey.getBytes()); 35 // 删除指定列族的所有数据 36 delete.addFamily(colFamily.getBytes()); 37 //删除指定列的数据 38 delete.addColumn(colFamily.getBytes(), col.getBytes()); 39 40 table.delete(delete); 41 table.close(); 42 System.out.println("删除成功"); 43 Init.close(); 44 } 45}

Get获取单个数据:

1import org.apache.hadoop.hbase.*; 2import org.apache.hadoop.hbase.client.*; 3import java.io.IOException; 4import java.util.Scanner; 5 6import Init.Init; 7public class GetData { 8 public static void main(String [] args) throws IOException 9 { 10 Scanner sc=new Scanner (System.in); 11 System.out.println("请输入查找数量:"); 12 int n = sc.nextInt(); 13 for(int i=0;i<n;i++) 14 { 15 sc=new Scanner(System.in);//sc对象初始化 16 System.out.println("请输入查找表名:"); 17 String tb_Name=sc.nextLine(); 18 System.out.println("请输入行键:"); 19 String tb_rowKey=sc.nextLine(); 20 System.out.println("请输入列族:"); 21 String tb_colFamily=sc.nextLine(); 22 System.out.println("请输入列:"); 23 String tb_col=sc.nextLine(); 24 getData(tb_Name,tb_rowKey,tb_colFamily,tb_col); 25 } 26 sc.close(); 27 } 28 29 public static void getData(String tableName,String rowKey,String colFamily,String col)throws IOException 30 { 31 Init.init(); 32 Table table =Init. connection.getTable(TableName.valueOf(tableName)); 33 Get get = new Get(rowKey.getBytes()); 34 get.addColumn(colFamily.getBytes(),col.getBytes()); 35 Result result = table.get(get);//返回到结果集 36 // showCell(result); 37 Cell[] cells = result.rawCells(); 38 for(Cell cell:cells) 39 { 40 System.out.println("行键:"+new String(CellUtil.cloneRow(cell))+" "); 41 // System.out.println("Timetamp:"+cell.getTimestamp()+" "); 42 System.out.println(" 列族:"+new String(CellUtil.cloneFamily(cell))+" "); 43 System.out.println(" 列:"+new String(CellUtil.cloneQualifier(cell))+" "); 44 System.out.println("数据:"+new String(CellUtil.cloneValue(cell))+" "); 45 table.close(); 46 Init. close(); 47 } 48 } 49} 50 //将结果集的值遍历输出 51 /*public static void showCell(Result result){ 52 Cell[] cells = result.rawCells(); 53 for(Cell cell:cells){ 54 System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" "); 55 System.out.println("Timetamp:"+cell.getTimestamp()+" "); 56 System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" "); 57 System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" "); 58 System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" "); 59 } 60 }*/

Scan获取所有数据:

1import java.io.IOException; 2 3 4import org.apache.hadoop.hbase.KeyValue; 5import org.apache.hadoop.hbase.TableName; 6import org.apache.hadoop.hbase.client.Result; 7import org.apache.hadoop.hbase.client.ResultScanner; 8import org.apache.hadoop.hbase.client.Scan; 9import org.apache.hadoop.hbase.client.Table; 10import java.util.Scanner; 11 12import Init.Init; 13public class ScanData { 14 public static void main(String [] args) throws IOException 15 { 16 Scanner sc=new Scanner(System.in); 17 System.out.println("请输入查询表的数量"); 18 int n=sc.nextInt(); 19 for(int i=0;i<n;i++) 20 { 21 sc=new Scanner(System.in); 22 System.out.println("请输入查询的表名"); 23 String tb_name=sc.nextLine(); 24 scanData(tb_name); 25 } 26 sc.close(); 27 } 28 29 public static void scanData(String tableName)throws IOException 30 { 31 32 Scan scan = new Scan(); 33 //scan.addColumn(Bytes.toBytes(""),Bytes.toBytes("")); 添加列族;列的约束查询 34 Init.init(); 35 Table table = Init.connection.getTable(TableName.valueOf(tableName)); 36 ResultScanner resultScanner = table.getScanner(scan); 37 Result rs = resultScanner.next(); 38 for (; rs != null;rs = resultScanner.next()){ 39 for (KeyValue kv : rs.list()){ 40 System.out.println("--------------"); 41 System.out.println("行键:"+ new String(kv.getRow())); 42 System.out.println("列族: "+ new String(kv.getFamily())); 43 System.out.println("列 :" + new String(kv.getQualifier ())); 44 System.out.println("数值 :"+ new String(kv.getValue())); 45 } 46 } 47 48 } 49 }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )