hbase api java_Hbase(六) hbase Java API

本文详细介绍了HBase的主要Java API类及其用途,包括HBaseAdmin用于管理表信息,HBaseConfiguration进行配置,HTableDescriptor描述表结构,HColumnDescriptor维护列族信息,以及HTable、Put、Get、Result等用于数据操作。同时,提供了具体的增删改查代码示例,展示了如何在Java中与HBase进行交互。
摘要由CSDN通过智能技术生成

一、

几个主要 Hbase API 类和数据模型之间的对应关系:

0bfb8389e55a4126582c89e6c0baadbc.png

1、 HBaseAdmin

关系: org.apache.hadoop.hbase.client.HBaseAdmin

作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删 除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。

e95677265c7a3a38ada073f3953d6446.png

28c5d84206a07879f3b386a22543e7d9.png

2、 HBaseConfiguration

关系: org.apache.hadoop.hbase.HBaseConfiguration

作用:对 HBase 进行配置

efc0f3ddb6d748e0ff6e1efa3c11633d.png

3、 HTableDescriptor

关系: org.apache.hadoop.hbase.HTableDescriptor

作用:包含了表的名字极其对应表的列族

bef888d7873e0d2f962988f0d12f3241.png

4、 HColumnDescriptor

关系: org.apache.hadoop.hbase.HColumnDescriptor

作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添 加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。

列族被删除的时候,列族里面的数据也会同时被删除。

5c166eacacaecb177a8976d1e2e74398.png

5、 HTable

关系: org.apache.hadoop.hbase.client.HTable

作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。

0882bb3a9fca0d082248f3ff63d0362e.png

b2b706dc507627f27e721c6f579ec745.png

6、 Put

关系: org.apache.hadoop.hbase.client.Put

作用:用来对单个行执行添加操作

6568dd8408de4b40a616eb11c84d03db.png

7、 Get

关系: org.apache.hadoop.hbase.client.Get

作用:用来获取单个行的相关信息

79dbf96938889d7090607932d79ae5e1.png

8、 Result

关系: org.apache.hadoop.hbase.client.Result

作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值 或者各种 Map 结构( key-value 对)

2cbca1b224ced14f0a73ee00300c53be.png

二、具体增删改查    代码具体实现:

package HbaseDome;

import java.util.List;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.Cell;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.KeyValue;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.Delete;

import org.apache.hadoop.hbase.client.Get;

import org.apache.hadoop.hbase.client.HBaseAdmin;

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.protobuf.generated.ZooKeeperProtos.Table;

import org.apache.hadoop.hbase.util.Bytes;

public class Hbasedome implements HBaseDemoInterface{

static Configuration conf =null;

private static final String ZKconnect="192.168.123.212:2181,192.168.123.213:2181,192.168.123.214:2181";

static{

conf=HBaseConfiguration.create();

conf.set("hbase.zookeeper.quorum", ZKconnect);

}

//static String tableName="student";

//static String[] family={"lie01","lie02"};

public static void main(String[] args) {

Hbasedome a =new Hbasedome();

String tableName="student11";

String[] family={"lie01","lie02"};

try {

HTableDescriptor htds =new HTableDescriptor(tableName);

for(int z=0;z

HColumnDescriptor h=new HColumnDescriptor(family[z]);

htds.addFamily(h);

}

//a.descTable("table03");

//a.createTable(tableName, htds);

//a.descTable("table03");

//a.getAllTables();

//a.createTable(tableName,family);

//a.getResult("table03", "usr001");

//a.dropTable("user1");

//a.getAllTables();

//a.putData("table03", "usr005", "liezu01", "name", "liu");

//a.getResult("table03", "usr001");

//a.getResultScann("table03");

//a.getResultScann("table03","");

Result result = a.getResult("table03", "usr001");

System.out.println(result.toString());

List cells = result.listCells();

for (int i = 0; i < cells.size(); i++) {

Cell cell = cells.get(i);

System.out.println(cell.toString());

//printCell(cell);

}

//List list = result.list();

//for (int i = 0; i < list.size(); i++) {

//KeyValue kv = list.get(i);

//printKeyValye(kv);

//}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void printKeyValye(KeyValue kv) {

System.out.println(Bytes.toString(kv.getRow()) + "\t" + Bytes.toString(kv.getFamily()) + "\t" + Bytes.toString(kv.getQualifier()) + "\t" + Bytes.toString(kv.getValue()) + "\t" + kv.getTimestamp());

}

public static void printCell(Cell cell) {

System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier()) + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());

}

//创建表

@Override

public void createTable(String tableName, String[] family) throws Exception {

HBaseAdmin admin=new HBaseAdmin(conf);

HTableDescriptor desc =new HTableDescriptor(tableName);

for(int i=0;i

desc.addFamily(new HColumnDescriptor(family[i]));

System.out.println("11111111111"+family[i]);

}

if(admin.tableExists(tableName)){

System.out.println("表已经存在,别瞎输行吗");

//System.exit(0);

}else{

admin.createTable(desc);

System.out.println("表创建成功");

}

}

//创建表

@Override

public void createTable(String tableName, HTableDescriptor htds) throws Exception {

HBaseAdmin admin=new HBaseAdmin(conf);

boolean tableExists1 = admin.tableExists(Bytes.toBytes(tableName));

System.out.println(tableExists1 ? "表已存在" : "表不存在");

admin.createTable(htds);

boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));

System.out.println(tableExists ? "创建表成功" : "创建失败");

}

@Override

public void descTable(String tableName) throws Exception {

HBaseAdmin admin=new HBaseAdmin(conf);

HTable table=new HTable(conf, tableName);

HTableDescriptor desc =table.getTableDescriptor();

HColumnDescriptor[] columnFamilies = desc.getColumnFamilies();

for(HColumnDescriptor t:columnFamilies){

System.out.println(Bytes.toString(t.getName()));

}

}

这种方式是替换该表tableName的所有列簇

@Override

public void modifyTable(String tableName) throws Exception {

HBaseAdmin admin=new HBaseAdmin(conf);

HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));

htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));

htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));

admin.modifyTable(tableName, htd);

// 删除该表tableName当中的特定的列簇

// admin.deleteColumn(tableName, "cf3");

System.out.println("修改成功");

}

@Override

public void getAllTables() throws Exception {

HBaseAdmin admin =new HBaseAdmin(conf);

String[] tableNames = admin.getTableNames();

for(int i=0;i

System.out.println(tableNames[i]);

}

}

//更新数据 插入数据

@Override

public void putData(String tableName, String rowKey, String familyName, String columnName, String value)

throws Exception {

HTable htable=new HTable(conf, Bytes.toBytes(tableName));

Put put=new Put(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));

htable.put(put);

}

//为表添加数据

@Override

public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2,

String[] value2) throws Exception {

Put put=new Put(Bytes.toBytes(rowKey));

HTable htable=new HTable(conf, Bytes.toBytes(tableName));

HColumnDescriptor[] columnFamilies = htable.getTableDescriptor().getColumnFamilies();

for(int i=0;i<=columnFamilies.length;i++){

String nameAsString = columnFamilies[i].getNameAsString();

if(nameAsString.equals("lie01")){

for(int j=0;j

put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));

}

}

if(nameAsString.equals("lie02")){

for(int j=0;j

put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));

}

}

}

htable.put(put);

System.out.println("addData ok!");

}

//根据rowkey 查询

@Override

public Result getResult(String tableName, String rowKey) throws Exception {

Get get=new Get(Bytes.toBytes(rowKey));

HTable htable=new HTable(conf, Bytes.toBytes(tableName));

Result result=htable.get(get);

//for(KeyValue k:result.list()){

//System.out.println(Bytes.toString(k.getFamily()));

//System.out.println(Bytes.toString(k.getQualifier()));

//System.out.println(Bytes.toString(k.getValue()));

//System.out.println(k.getTimestamp());

//}

return result;

}

//查询指定的某列

@Override

public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {

Get get=new Get(Bytes.toBytes(rowKey));

HTable htable=new HTable(conf, Bytes.toBytes(tableName));

get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));

Result result=htable.get(get);

for(KeyValue k:result.list()){

System.out.println(Bytes.toString(k.getFamily()));

System.out.println(Bytes.toString(k.getQualifier()));

System.out.println(Bytes.toString(k.getValue()));

System.out.println(k.getTimestamp());

}

return result;

}

//遍历查询表

@Override

public ResultScanner getResultScann(String tableName) throws Exception {

Scan scan=new Scan();

ResultScanner rs =null;

HTable htable=new HTable(conf, tableName);

try{

rs=htable.getScanner(scan);

for(Result r: rs){

for(KeyValue kv:r.list()){

System.out.println(Bytes.toString(kv.getRow()));

System.out.println(Bytes.toString(kv.getFamily()));

System.out.println(Bytes.toString(kv.getQualifier()));

System.out.println(Bytes.toString(kv.getValue()));

System.out.println(kv.getTimestamp());

}

}

}finally{

rs.close();

}

return rs;

}

@Override

public ResultScanner getResultScann(String tableName, Scan scan) throws Exception {

ResultScanner rs =null;

HTable htable=new HTable(conf, tableName);

try{

rs=htable.getScanner(scan);

for(Result r: rs){

for(KeyValue kv:r.list()){

System.out.println(Bytes.toString(kv.getRow()));

System.out.println(Bytes.toString(kv.getFamily()));

System.out.println(Bytes.toString(kv.getQualifier()));

System.out.println(Bytes.toString(kv.getValue()));

System.out.println(kv.getTimestamp());

}

}

}finally{

rs.close();

}

return rs;

}

//查询表中的某一列

@Override

public Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName)

throws Exception {

HTable htable=new HTable(conf, tableName);

Get get=new Get(Bytes.toBytes(rowKey));

get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));

Result result=htable.get(get);

for(KeyValue kv: result.list()){

System.out.println(Bytes.toString(kv.getFamily()));

System.out.println(Bytes.toString(kv.getQualifier()));

System.out.println(Bytes.toString(kv.getValue()));

System.out.println(kv.getTimestamp());

}

return result;

}

//查询某列数据的某个版本

@Override

public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName,

int versions) throws Exception {

HTable htable=new HTable(conf, tableName);

Get get =new Get(Bytes.toBytes(rowKey));

get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));

get.setMaxVersions(versions);

Result result=htable.get(get);

for(KeyValue kv: result.list()){

System.out.println(Bytes.toString(kv.getFamily()));

System.out.println(Bytes.toString(kv.getQualifier()));

System.out.println(Bytes.toString(kv.getValue()));

System.out.println(kv.getTimestamp());

}

return result;

}

//删除指定某列

@Override

public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception {

HTable htable=new HTable(conf, tableName);

//Delete delete1=new Delete(Bytes.toBytes(rowKey));

Delete de =new Delete(Bytes.toBytes(rowKey));

de.deleteColumn(Bytes.toBytes(falilyName), Bytes.toBytes(columnName));

htable.delete(de);

}

//删除指定的某个rowkey

@Override

public void deleteColumn(String tableName, String rowKey) throws Exception {

HTable htable=new HTable(conf, tableName);

Delete de =new Delete(Bytes.toBytes(rowKey));

htable.delete(de);

}

//让该表失效

@Override

public void disableTable(String tableName) throws Exception {

HBaseAdmin admin=new HBaseAdmin(conf);

admin.disableTable(tableName);

}

//删除表

@Override

public void dropTable(String tableName) throws Exception {

HBaseAdmin admin=new HBaseAdmin(conf);

admin.disableTable(tableName);

admin.deleteTable(tableName);

}

}

package com.ghgj.hbase.test1610;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.Cell;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.KeyValue;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.Get;

import org.apache.hadoop.hbase.client.HBaseAdmin;

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.util.Bytes;

public class HBaseAPIDemo1610 implements HBaseDemoInterface {

private static final String ROWKEY = "p001";

private static final String ROWKEY2 = "p002";

private static final String FAMILY1 = "cf1";

private static final String FAMILY2 = "cf2";

private static final String KEY = "name";

private static final String VALUE = "huangbo";

private static final String TABLE_NAME = "person";

private static final String[] COLUMN_FAMILY = new String[] { FAMILY1, FAMILY2 };

static Configuration conf = null;

static HBaseAdmin admin = null;

static HTable table = null;

static {

try {

conf = HBaseConfiguration.create();

conf.set("hbase.zookeeper.quorum", "hadoop03:2181,hadoop04:2181,hadoop05:2181");

admin = new HBaseAdmin(conf);

table = new HTable(conf, TABLE_NAME);

} catch (IOException e) {

// e.printStackTrace();

System.out.println("报错");

}

}

public static void main(String[] args) throws Exception {

HBaseAPIDemo1610 hbase = new HBaseAPIDemo1610();

// 测试创建表

hbase.createTable(TABLE_NAME, COLUMN_FAMILY);

// 测试创建表

HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME));

for (int i = 0; i < COLUMN_FAMILY.length; i++) {

HColumnDescriptor cf1 = new HColumnDescriptor(COLUMN_FAMILY[i]);

htd.addFamily(cf1);

}

hbase.createTable(TABLE_NAME, htd);

// 查看表属性

hbase.descTable(TABLE_NAME);

// 查询所有的表

hbase.getAllTables();

// 测试修改表

hbase.modifyTable(TABLE_NAME);

// 插入数据

hbase.putData(TABLE_NAME, ROWKEY, FAMILY1, KEY, VALUE);

// 测试插入一堆数据

String[] column1 = new String[] { "name1", "age", "province" };

String[] value1 = new String[] { "huangbo", "33", "xinjiang" };

String[] column2 = new String[] { "gender" };

String[] value2 = new String[] { "male" };

hbase.addData(TABLE_NAME, ROWKEY2, column1, value1, column2, value2);

// 通过rowkey查询数据

Result result = hbase.getResult(TABLE_NAME, ROWKEY2);

System.out.println(result.toString());

List list = result.list();

for (int i = 0; i < list.size(); i++) {

KeyValue kv = list.get(i);

printKeyValye(kv);

}

// 通过rowkey, family, province查询数据

Result result1 = hbase.getResult(TABLE_NAME, ROWKEY2, FAMILY1, "province");

List cells = result1.listCells();

for (int i = 0; i < cells.size(); i++) {

Cell cell = cells.get(i);

printCell(cell);

}

// 扫描全表数据

ResultScanner resultScann = hbase.getResultScann(TABLE_NAME);

printResultScanner(resultScann);

/*Iterator iterator = resultScann.iterator();

while(iterator.hasNext()){

Result next = iterator.next();

}*/

// 通过scan扫描全表数据,scan中可以加入一些过滤条件

Scan scan = new Scan();

scan.setStartRow(Bytes.toBytes("user"));

scan.setStopRow(Bytes.toBytes("zk002"));

scan.setTimeRange(1488252774189l, 1488252774191l);

ResultScanner resultScann1 = hbase.getResultScann(TABLE_NAME, scan);

printResultScanner(resultScann1);

// 两种方式查询最大版本数的hbase数据

Result resultByVersion = hbase.getResultByVersion(TABLE_NAME, ROWKEY, FAMILY1, "name", 3);

printResult(resultByVersion);

System.out.println("-------------------");

ResultScanner rs = hbase.getResultByVersion(ROWKEY, FAMILY1, "name", 3);

printResultScanner(rs);

// 删除表

hbase.dropTable(TABLE_NAME);

}

public static void printResultScanner(ResultScanner resultScann) {

for (Result result : resultScann) {

printResult(result);

}

}

public static void printResult(Result result) {

List cells = result.listCells();

for (int i = 0; i < cells.size(); i++) {

Cell cell = cells.get(i);

printCell(cell);

}

}

public static void printCell(Cell cell) {

System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier()) + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());

}

public static void printKeyValye(KeyValue kv) {

System.out.println(Bytes.toString(kv.getRow()) + "\t" + Bytes.toString(kv.getFamily()) + "\t" + Bytes.toString(kv.getQualifier()) + "\t" + Bytes.toString(kv.getValue()) + "\t" + kv.getTimestamp());

}

// create 'tablename','cf1','cf2'

@Override

public void createTable(String tableName, String[] family) throws Exception {

HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));

for (int i = 0; i < family.length; i++) {

HColumnDescriptor cf1 = new HColumnDescriptor(family[i]);

htd.addFamily(cf1);

}

admin.createTable(htd);

boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));

System.out.println(tableExists ? "创建表成功" : "创建失败");

}

@Override

public void createTable(String tableName, HTableDescriptor htd) throws Exception {

admin.createTable(htd);

boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));

System.out.println(tableExists ? "创建表成功" : "创建失败");

}

// desc 'person'

@Override

public void descTable(String tableName) throws Exception {

HTableDescriptor tableDescriptor = table.getTableDescriptor();

HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();

for (HColumnDescriptor hcd : columnFamilies) {

// System.out.println(hcd.toString()+"\t");

System.out.println(Bytes.toString(hcd.getName()));

}

}

@Override

public void modifyTable(String tableName) throws Exception {

// 这种方式是替换该表tableName的所有列簇

HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));

htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));

htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));

admin.modifyTable(tableName, htd);

// 删除该表tableName当中的特定的列簇

// admin.deleteColumn(tableName, "cf3");

System.out.println("修改成功");

}

// list

@Override

public void getAllTables() throws Exception {

TableName[] listTableNames = admin.listTableNames();

for (TableName tn : listTableNames) {

System.out.println(tn.toString());

}

}

// put 'tablename','rowkey','familyname:key','value'

@Override

public void putData(String tableName, String rowKey, String familyName, String columnName, String value) throws Exception {

// HTable table = new HTable(conf, tableName);

Put put = new Put(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));

table.put(put);

System.out.println("插入成功");

}

/**

* @param tableName

* 表名

* @param rowKey

* rowkey

* @param column1

* 第一个列簇的key数组

* @param value1

* 第一个列簇的value数组,key数组和value数组长度必须一样

* @param column2

* 第二列簇的key数组

* @param value2

* 第二个列簇的values数组, 同上同理

* @throws Exception

*/

@Override

public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2, String[] value2) throws Exception {

List puts = new ArrayList();

for (int i = 0; i < column1.length; i++) {

Put put = new Put(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(FAMILY1), Bytes.toBytes(column1[i]), Bytes.toBytes(value1[i]));

puts.add(put);

}

for (int i = 0; i < column2.length; i++) {

Put put = new Put(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(FAMILY2), Bytes.toBytes(column2[i]), Bytes.toBytes(value2[i]));

puts.add(put);

}

table.put(puts);

System.out.println("插入一堆数据成功");

}

// get 'tablename','rowkey'

@Override

public Result getResult(String tableName, String rowKey) throws Exception {

Get get = new Get(Bytes.toBytes(rowKey));

Result result = table.get(get);

return result;

}

@Override

public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {

Get get = new Get(Bytes.toBytes(rowKey));

get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));

Result result = table.get(get);

return result;

}

@Override

public ResultScanner getResultScann(String tableName) throws Exception {

Scan scan = new Scan();

ResultScanner scanner = table.getScanner(scan);

// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY2));

// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY1),

// Bytes.toBytes("name1"));

return scanner;

}

@Override

public ResultScanner getResultScann(String tableName, Scan scan) throws Exception {

return table.getScanner(scan);

}

@Override

public Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName) throws Exception {

return null;

}

// get 'person','p001',{COLUMNS => 'cf1:name', VERSIONS => 3}

@Override

public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName, int versions) throws Exception {

Get get = new Get(Bytes.toBytes(rowKey));

get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));

get.setMaxVersions(versions);

Result result = table.get(get);

return result;

}

public ResultScanner getResultByVersion(String rowKey, String familyName, String columnName, int versions) throws Exception {

Scan scan = new Scan(Bytes.toBytes(rowKey), Bytes.toBytes(rowKey));

scan.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));

scan.setMaxVersions(versions);

ResultScanner scanner = table.getScanner(scan);

return scanner;

}

@Override

public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception {

}

@Override

public void deleteColumn(String tableName, String rowKey) throws Exception {

}

@Override

public void disableTable(String tableName) throws Exception {

admin.disableTable(tableName);

}

@Override

public void dropTable(String tableName) throws Exception {

try {

admin.deleteTable(tableName);

} catch (Exception e) {

// e.printStackTrace();

disableTable(tableName);

admin.deleteTable(tableName);

System.out.println("ssssssss");

} finally {

boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));

System.out.println(tableExists ? "删除失败" : "删除成功");

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值