栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HBase开发: Java API 管理表

HBase开发: Java API 管理表

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

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

前言:

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

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

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

第一关要:

第一关答案:

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 {
		
		Configuration conf = HbaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
		Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
		Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
		List 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()));
		}
		



		
	}
}

 第二关要求:

第二关答案:

	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{
		
		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的列族  
		
			







		
	}
	
}

 第三关要求:

第三关答案:

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 {

	
	public void deleteTable(String tableName)throws Exception{
		
		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);
	


		
	}
	
	
	public void createTable(String tableName,String... columnNames)throws Exception{
		
		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);



		
	}
	
	
	public void enableTable(String tableName) throws Exception{
		
		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);


		
	}
	
	
	public void disableTable(String tableName)throws Exception{
		
		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);


		
	}
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号