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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • siamfc模型训练_卷积神经网络分类

    siamfc模型训练_卷积神经网络分类Abstract本论文提出一种新的全卷积孪生网络作为基本的跟踪算法,这个网络在ILSVRC15的目标跟踪视频数据集上进行端到端的训练。我们的跟踪器在帧率上超过了实时性要求,尽管它非常简单,但在多个benchmark上达到最优的性能。1.Introduction最近很多研究通过使用预训练模型来解决上述问题。这些方法中,要么使用网络内部某一层作为特征的shallow方法(如相关滤波);要…

    2022年9月1日
  • idea集成svn使用教程_idea导入svn项目

    idea集成svn使用教程_idea导入svn项目1.查看svn仓库调出svn视图:连接svn服务器:连接后效果如下:补充:如果输入正确的连接地址后出现错误—系统找不到指定的文件请到设置中检查(File|Settings|VersionControl|Subversion)SVC客户端路径配置的对不对(选中bin目录下的svn.exe)?如果找不到svn.exe,看下图解释2.Idea集成svn如果不小心选错了其他选项,比如cvs,可以在settings中重新选择;…

    2022年10月18日
  • Mac突然连不上WiFi解决步骤「建议收藏」

    Mac突然连不上WiFi解决步骤「建议收藏」事件描述:上午用图书馆无线看电视过程中,莫名就网断了,开始以为是图书馆网问题,后来手机开热点也无法连接。去年刚买Mac时也出现过这种问题,后来换了主板,心慌还以为又要去修理了o(╯□╰)o 开始无用尝试部分: 1.打开设置-网络-位置,更改为自动 2.关机,立即同时按下command+option+R+P,听到三声后松手 解决步骤:移除网络配置和偏好文件 手动删除网络plist…

    2022年6月18日
  • 10月30日 迅雷白金会员vip账号分享「建议收藏」

    10月30日 迅雷白金会员vip账号分享「建议收藏」www.91freevip,就要免费VIP网10月30日8:53更新迅雷会员VIP账号:迅雷vip账号894273128:1密码3579791迅雷vip账号juhao11:2密码19577

    2022年7月1日
  • java属于什么语言_java是什么语言 ?是什么系统?

    java属于什么语言_java是什么语言 ?是什么系统?一开始了解计算机这个专业,大家都会经常性听到Java这一词语,那么大家有真正的了解什么是Java吗?Java是属于什么语言呢?JAVA语言,其实是混合型的一种语言,Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点。下面来介绍一些Java的主要特征:1)Java语言是简单的。Java语言的语法与C语言和C++语言相似,这让很多程序员可…

    2022年7月8日
  • MVC过滤器的详细讲解和示范样本

    MVC过滤器的详细讲解和示范样本

    2022年1月14日

发表回复

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

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