HBase开发: Java API 管理表

HBase开发: Java API 管理表头歌(JavaAPI管理表)答案我看网上都没有这一关的答案,就自己写了一个。

大家好,又见面了,我是你们的朋友全栈君。

分布式数据库HBase开发: Java API 管理表

  1. javaAPI获取表的列表
  2. 修改表
  3. 禁用表,启用表,删除表

HBase开发: Java API 管理表

前言:

        第一关用一个foreach遍历,输出三行代码就行。

        第二关对照左边教程,对号入座就行。

        第三关删除(记得先停用再删除,不然报错),停用,启用都还比较简单,创建表函数添加列的AIP有一个是过时的(HColumnDescriptor)。

第一关要:

HBase开发: Java API 管理表

第一关答案:

package step1;

import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.*;

public class Task {

	public void showTableList() throws Exception {
		/********* Begin *********/
		Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
		List<TableDescriptor> tableDescriptors = admin.listTableDescriptors();
		for(TableDescriptor tableDescriptor: tableDescriptors){
			System.out.println("Table:" + tableDescriptor.getTableName());
			System.out.println("\texists:" + admin.tableExists(tableDescriptor.getTableName()));
			System.out.println("\tenabled:" + admin.isTableEnabled(tableDescriptor.getTableName()));
		}
		



		/********* End *********/
	}
}

 第二关要求:

HBase开发: Java API 管理表

第二关答案:

	package step2;

import java.io.IOException;


import org.apache.hadoop.conf.*;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.io.compress.Compression;
import org.apache.hadoop.hbase.util.*;

public class Task {
	
	public void updateTables()throws Exception{
		/********* Begin *********/
		Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
		TableName tableName1 = TableName.valueOf("t_emp2");
		TableName tableName2 = TableName.valueOf("t_dept2");
				ColumnFamilyDescriptorBuilder buildFamily = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data"));//创建builder对象
				buildFamily.setBlocksize(1024*1024);//设置缓存大小
				buildFamily.setBlockCacheEnabled(false);//设置关闭缓存,默认是true
				buildFamily.setCompressionType(Compression.Algorithm.GZ);//默认是NONE
				ColumnFamilyDescriptor family = buildFamily.build();//构建Family对象
				admin.modifyColumnFamily(tableName1, family);//调用修改方法,方法接收两个参数:TableName,ColumnFamilyDescriptor
				admin.deleteColumnFamily(tableName1, Bytes.toBytes("data1"));//删除表中名为data的列族    
			
			
				ColumnFamilyDescriptorBuilder buildFamily1 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data1"));//创建builder对象
				buildFamily1.setMinVersions(2);
				buildFamily1.setMaxVersions(5);
				buildFamily1.setInMemory(true); //默认是false
				buildFamily1.setTimeToLive(60*60*24); //以秒为单位,超过这个时间设置的就会在下一次大合并中被删除
				ColumnFamilyDescriptor family1 = buildFamily1.build();//构建Family对象
				admin.modifyColumnFamily(tableName2, family1);//调用修改方法,方法接收两个参数:TableName,ColumnFamilyDescriptor

				admin.deleteColumnFamily(tableName2, Bytes.toBytes("data"));//删除表中名为data的列族  
		
			







		/********* End *********/
	}
	
}

 第三关要求:

HBase开发: Java API 管理表

第三关答案:

package step3;

import java.io.IOException;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.*;


public class Task {

	/**
	 * 刪除表
	 * @param tableName 表名
	 * @throws Exception
	 */
	public void deleteTable(String tableName)throws Exception{
		/********* Begin *********/
		Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
		TableName testName = TableName.valueOf(Bytes.toBytes(tableName));
		admin.disableTable(testName);
		admin.deleteTable(testName);
	


		/********* End *********/
	}
	
	/**
	 * 创建表
	 * @param tableName  表名
	 * @param columnNames 列族的动态数组
	 * @throws Exception
	 */
	public void createTable(String tableName,String... columnNames)throws Exception{
		/********* Begin *********/
		Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象

		// TableName tableName1 = TableName.valueOf(Bytes.toBytes(tableName));//定义表名
		// HTableDescriptor htd = new HTableDescriptor(tableName1);//定义表对象
		// for(String s: columnNames){
		// 	htd.addFamily(new HColumnDescriptor(Bytes.toBytes(s)));
		// }

        //构建一个Test_teacher_info表
        TableDescriptorBuilder test_teacher_info = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));

        for(String s: columnNames){
			ColumnFamilyDescriptor of = ColumnFamilyDescriptorBuilder.of(s);
 			test_teacher_info.setColumnFamily(of);
		}
    
        //构建
        TableDescriptor build = test_teacher_info.build();
 
        admin.createTable(build);



		/********* End *********/
	}
	
	/**
	 * 启用表
	 * @param tableName 
	 * @throws Exception 
	 */
	public void enableTable(String tableName) throws Exception{
		/********* Begin *********/
		Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
		TableName demoName = TableName.valueOf(Bytes.toBytes(tableName));
		admin.enableTable(demoName);


		/********* End *********/
	}
	
	/**
	 * 禁用表
	 * @param tableName
	 */
	public void disableTable(String tableName)throws Exception{
		/********* Begin *********/
		Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
		TableName testName = TableName.valueOf(Bytes.toBytes(tableName));
		admin.disableTable(testName);


		/********* End *********/
	}
	
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160427.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm如何缩进多行代码_pycharm整段代码缩进

    pycharm如何缩进多行代码_pycharm整段代码缩进pycharm多行代码缩进、左移在使用pycharm时,经常会需要多行代码同时缩进、左移,pycharm提供了快捷方式1、pycharm使多行代码同时缩进鼠标选中多行代码后,按下Tab键,一次缩进四个字符2、pycharm使多行代码同时左移鼠标选中多行代码后,同时按住shift+Tab键,一次左移四个字符…

    2022年8月25日
    0
  • ghost备份系统有什么用_win备份和ghost备份的区别

    ghost备份系统有什么用_win备份和ghost备份的区别  Ghost(是GeneralHardwareOrientedSoftwareTransfer的缩写译为“面向通用型硬件系统传送器”)软件是美国赛门铁克公司推出的一款出色的硬盘备份还原工具,可以实现FAT16、FAT32、NTFS、OS2等多种硬盘分区格式的分区及硬盘的备份还原。俗称克隆软件。  1、特点:既然称之为克隆软件,说明其Ghost的备份还原是以硬盘的扇区为单位进行的

    2022年9月5日
    4
  • Java实现Excel导入和导出,看这一篇就够了(珍藏版)

    Java实现Excel导入和导出,看这一篇就够了(珍藏版)前言最近抽了两天时间,把Java实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。环境准备1.Maven依赖本次工具类的封装主要依赖于阿里巴巴的JSON包,以及表格处理的POI包,所以我们需要导入这两个库的依赖包,另外,我们还需要文件上传的相关包,毕竟我们在浏览器页面,做Excel导入时,是上传的Excel文件。<!–文件上传–><dependency>

    2022年6月28日
    128
  • 企业债和公司债的四点区别是_公司债和公司债券的区别

    企业债和公司债的四点区别是_公司债和公司债券的区别企业债和公司债的区别体现在四方面。一是发行主体不同:公司债券目前仅能由上市的股份有限公司发行。二是募集资金用途不同:企业债券的募集资金一般用于基础设施建设、固定资产投资、重大技术改造、公益事业投资等方

    2022年8月4日
    1
  • ios uiview和calayer_ipad的assistive touch在哪里

    ios uiview和calayer_ipad的assistive touch在哪里IOS笔记CALayer的position和anchorPointCALayer有2个非常重要的属性:position和anchorPoint@propertyCGPointposition;用来设置CALayer在父层中的位置以父层的左上角为原点(0,0)@propertyCGPointanchorPoint;称为”定位点”,“锚点”决定着CALayer身上的哪个点会在poistion属性所指的位置以自己的左上角为原点(0,0)它的x,y取值范围都是0~1默认值为(0.5,0.

    2022年10月8日
    0
  • 利用python 提取log 文件里的关键句子,并进行统计分析

    利用python 提取log 文件里的关键句子,并进行统计分析

    2022年1月19日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号