hbase java admin_java连接hbase(一):Admin功能接口表管理

本文hbase版本基于hbase-1.0.0-cdh5.6.1。Admin接口主要操作表创建,删除,列族的增删,表的清空,region的增删,合并操作。

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.MasterNotRunningException;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.ZooKeeperConnectionException;

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

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

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

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

public class AdminTest {

public static Configuration configuration;

static {

configuration = HBaseConfiguration.create();

configuration.set("hbase.zookeeper.property.clientPort", "2181");

configuration.set("hbase.zookeeper.quorum", zk_ips);

configuration.set("hbase.rpc.timeout", "120000");

configuration.set("hbase.client.scanner.timeout.period", "120000");

configuration.set("hbase.regionserver.lease.period", "120000");

}

// 创建表

public void createTable(String tableName) {

System.out.println("create table ......");

Connection con = null;

Admin hBaseAdmin = null;

try {

con = ConnectionFactory.createConnection(configuration);

hBaseAdmin = con.getAdmin();// 新用法

// HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration); //老用法

if (hBaseAdmin.tableExists(TableName.valueOf(tableName))) {// 如果存在要创建的表,那么先删除,再创建

hBaseAdmin.disableTable(TableName.valueOf(tableName));

hBaseAdmin.deleteTable(TableName.valueOf(tableName));

System.out.println(tableName + " is exist,delete....");

}

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

tableDescriptor.addFamily(new HColumnDescriptor("cf1"));

tableDescriptor.addFamily(new HColumnDescriptor("cf2"));

tableDescriptor.addFamily(new HColumnDescriptor("cf3"));

hBaseAdmin.createTable(tableDescriptor);

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally{

if(hBaseAdmin != null){

try {

hBaseAdmin.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if(con != null){

try {

con.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

System.out.println("end create table ......");

}

/**

* 删除整个列族的数据

*/

public void deleteColumnFamily(String tableName, String cf) {

Connection con = null;

Admin hBaseAdmin = null;

try {

con = ConnectionFactory.createConnection(configuration);

hBaseAdmin = con.getAdmin();// 新用法

hBaseAdmin.deleteColumn(TableName.valueOf(tableName), Bytes.toBytes(cf));

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally{

if(hBaseAdmin != null){

try {

hBaseAdmin.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(con != null){

try {

con.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* 删除一张表

*

* @param tableName

*/

public void dropTable(String tableName) {

Connection con = null;

Admin admin = null;

try {

con = ConnectionFactory.createConnection(configuration);

admin = con.getAdmin();

admin.disableTable(TableName.valueOf(tableName));

admin.deleteTable(TableName.valueOf(tableName));

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

if(admin != null){

try {

admin.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(con != null){

try {

con.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* 添加一个列族

*/

public void addCF(String tableName, String cf){

Connection con = null;

Admin admin = null;

try {

con = ConnectionFactory.createConnection(configuration);

admin = con.getAdmin();

HColumnDescriptor hd = new HColumnDescriptor(cf);

admin.addColumn(TableName.valueOf(tableName.getBytes()), hd);

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

if(admin != null){

try {

admin.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if(con != null){

try {

con.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* 查询所有的表名

*/

public void listTables(){

Connection con = null;

Admin admin = null;

try {

con = ConnectionFactory.createConnection(configuration);

admin = con.getAdmin();

List tableNames = Arrays.asList(admin.listTableNames());

tableNames.forEach(t -> System.out.println(t));

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

if(admin != null){

try {

admin.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if(con != null){

try {

con.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

public static void main(String[] args) {

String tablename = "h_test";

AdminTest admin = new AdminTest();

admin.createTable(tablename);

//删除列族cf3

admin.deleteColumnFamily(tablename, "cf3");

//增加列族cf4

admin.addCF(tablename, "cf4");

//列出所有的表名

admin.listTables();

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复制url直接能跳过验证_python 爬虫如何突破登录验证

我用 python 做爬虫爬过不少数据,比如在 google play 爬应用信息;在 instragram, 500px 爬图片;当然爬虫的作用不止于此,比如定时去某个网站签到,妈妈再也不用担心我忘记签到了这些网站支持游客访问,但要访…

[2-sat]HDOJ3062 Party

中文题 题意略 学2-sat啦啦啦 2-sat就是 矛盾的 ($x、x’$不能同时取) m对人 相互也有限制条件 取出其中n个人 也有可能是把一件东西分成 取/不取 相矛盾的两种情况 (那就要拆点啦~) 取其中n件 做法是 暴力 和 强连通 两种 重点在于建图: 对于x,记 取…

node作为java中间间_node作为中间服务层如何发送请求(发送请求的实现方法详解)...

GET请求:var http require(http);var qs require(querystring);var data {a: 123,time: new Date().getTime()};//这是需要提交的数据var content qs.stringify(data);var options {hostname: 127.0.0.1,port: 10086,path: /pay/pay_callback? content,metho…

python目标识别代码_利用ImageAI库只需几行python代码超简实现目标检测

什么是目标检测目标检测关注图像中特定的物体目标,需要同时解决解决定位(localization) 识别(Recognition)。相比分类,检测给出的是对图片前景和背景的理解,我们需要从背景中分离出感兴趣的目标,并确定这一目标的描述(类别和位置…

Winodws live writer

发布一篇试试。 转载于:https://www.cnblogs.com/DotNetCSharp/p/4742956.html

java里面value_「Java基础知识」Java中包含哪些运算符

原标题:「Java基础知识」Java中包含哪些运算符在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等。算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左边,所以一般格式…

三元组法矩阵加法java_计算机视觉学习笔记(2.1)-KNN算法中距离矩阵的计算

本笔记系列以斯坦福大学CS231N课程为大纲,海豚浏览器每周组织一次授课和习题答疑。具体时间地点请见微信公众号黑斑马团队(zero_zebra)和QQ群(142961883)发布。同时课程通过腾讯课堂(百纳公开课)进行视频直播.欢迎参与…

[转]Java常用概念解答

1. 事务是什么? 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、 一致性、隔离性和持久性)属性,只有这样才能成为一个事务: 原子性 事务必须是原子…

idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...

之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试。打开IDEA,创建新项目:然后选择Maven,以及选择自己电脑的jdk:接下来自定义GroupId以及ArtifactI…

Linux 格式化磁盘命令mkfs

linux格式化磁盘命令mkfs指令:mkfs使用权限 : 超级使用者使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]说明 : 建立 linux 档案系统在特定的 partition 上参数 :device : 预备检查的硬盘 partition…

servlet 返回可访问文件_JavaWeb技术(4):Servlet的理解(上)

我们在开发中无时无刻都在与Servlet进行接触,只是因为框架的封装性,我们很少直接地去操作servlet,但再怎么封装,基本的思路都不会变化,变得只是实现的方式,Servlet是什么:网上的回答基本是Servl…

java ldap 分页_具有从属引用的 LDAP 分页查询未正确处理

具有从属引用的 LDAP 分页查询未正确处理09/14/2020本文内容本文提供了一些方法来避免使用从属引用的 LDAP 分页查询未正确处理的问题。原始产品版本: Windows 8原始 KB 编号: 2561166症状你有一个应用程序,使用 ldap_search_ext 或 ldap…

js分家效应

(原创文章,转载请注明出处) 有继承,那么就有分家。让我们看以下例子。 var parents function(){}parents.prototype.money 200;var children function(){}children.prototype new parents();var parent new parents();var ch…

如何设置打印的时候不加上页面链接_excel表格的这10个打印小技巧,办公室财务人员记得收藏...

打印工作表是日常工作中最常见的一个工作,也是Excel在工作中最常用的一个地方,如何做到快速准确地打印文件呢。今天文理会计小编给大家从网上整理了几个打印文件的小技巧。1、打印标题打印的工作表的数据有好多页的时候,为了查看方便&#xf…

java sql objects_第十五章-简书.sql

-- ## 练习1-- 1. 创建一个视图,通过该视图可以查询到工资在2000-5000内并且姓名中包含有A的员工编号,姓名,工资。create or replace view viewSal2k_5kas select empno,ename,sal from empwhere sal between 2000 and 5000and ename like %A…

rabbitmq 拉取消息太慢_面试官:消息队列这些我都要问

作者:mousycodersegmentfault.com/a/1190000021054802消息队列连环炮项目里怎么样使用 MQ 的?为什么要使用消息队列?消息队列有什么优点和缺点?kafka,activemq,rabbitmq,rocketmq 都有什么去呗?如何保证消息队列高可用…

java 星期顺序_第8周 【项目3-顺序串算法】

/**Copyright (c)2017,烟台大学计算机与控制工程学院*All rights reservrd.*作者:李欣豪*完成时间:2017年12月14日*版本号:v1.0*问题描述:采用顺序存储方式存储串,实现下列算法并测试:(1)试编写算法实现将…

[ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify uniq

angularjs 使用ng-repeat报错 <div ng-init"words [高校,高校,高校]" ng-repeat"word in words">{{word}} </div> [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use track by expression to specify unique keys 发现是因为相…

java 并列排名,178. 分数排名

题目描述编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名(Rank)相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔”。-----------| Id | Score |-----------| 1 | 3.50 || 2 |…

编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素...

建议130&#xff1a;以复数命名枚举类型&#xff0c;以单数命名枚举元素 枚举类型应该具有负数形式&#xff0c;它表达的是将一组相关元素组合起来的语义。比如&#xff1a; enum Week{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday} 在这里&#xff0c;Week对于星…