《educoder平台HBase开发:-Java-API-管理表》由会员分享,可在线阅读,更多相关《educoder平台HBase开发:-Java-API-管理表(9页珍藏版)》请在金锄头文库上搜索。
1、第1关:JavaAPI获取表的列表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 */ Co
2、nfiguration conf = HBaseConfiguration.create (); Connection connection = ConnectionFactory.createConnection(conf); Admin admin = connection.getAdmin (); try List tableDescriptors = admin.listTableDescriptors (); for (TableDescriptor tableDescriptor : tableDescriptors) TableName tableName = tableDesc
3、riptor.getTableName(); System.out.println(Table: + tableName); System.out.println(texists: + admin.tableExists(tableName); System.out.println(tenabled: + admin.isTableEnabled(tableName); finally admin.close(); /* End */-第2关:修改表package step2;import java.io.IOException;import org.apache.hadoop.conf.*;
4、import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import press.Compression;import org.apache.hadoop.hbase.util.*;public class Task public void updateTables()throws Exception/* Begin */Configuration config = new Configuration(); Connection conn = ConnectionFactory.createConnect
5、ion(config); Admin admin = conn.getAdmin(); String tableNames = t_emp2, t_dept2; /获取表的描述对象 for (int i = 0; i tableNames.length; i+) TableName tableName = TableName.valueOf(Bytes.toBytes(tableNamesi); /删除 if(i = 0) ColumnFamilyDescriptorBuilder buildFamily = ColumnFamilyDescriptorBuilder.newBuilder(B
6、ytes.toBytes(data);/构建Builder对象 buildFamily.setBlockCacheEnabled(false); buildFamily.setBlocksize(1024*1024*1); buildFamily.setCompressionType(Compression.Algorithm.GZ); ColumnFamilyDescriptor family = buildFamily.build(); admin.modifyColumnFamily(tableName, family); /修改 admin.deleteColumnFamily(tab
7、leName, Bytes.toBytes(data1);/删除 else ColumnFamilyDescriptorBuilder buildFamily = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(data1);/构建Builder对象 buildFamily.setMinVersions(2); buildFamily.setMaxVersions(5); buildFamily.setInMemory(true); buildFamily.setTimeToLive(60*60*24); ColumnFamilyD
8、escriptor family = buildFamily.build(); admin.modifyColumnFamily(tableName, family); admin.deleteColumnFamily(tableName, Bytes.toBytes(data); /* End */-第3关:禁用表、启用表、删除表package step3;import java.io.IOException;import org.apache.hadoop.conf.*;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hb
9、ase.client.*;import org.apache.hadoop.hbase.util.*;public class Task private static Configuration conf; private static Connection conn; static /静态代码块初始化config对象 try if (conf = null) conf = HBaseConfiguration.create(); catch (Exception e) throw new RuntimeException(e) ; /* * 刪除表 * param tableName 表名
10、* throws Exception */ public void deleteTable(String tableName)throws Exception /* Begin */ if(tableName != null & !tableName.isEmpty() Admin admin = getConnection().getAdmin(); TableName tableNameObj = TableName.valueOf(Bytes.toBytes(tableName); admin.disableTable(tableNameObj); admin.deleteTable(t
11、ableNameObj); /closeConnect(conn); /* End */ /* * 创建表 * param tableName 表名 * param columnNames 列族的动态数组 * throws Exception */ public void createTable(String tableName,String. columnNames)throws Exception /* Begin */ if(tableName != null & !tableName.isEmpty() ) Admin admin = getConnection().getAdmin(); TableName tableNameObj = TableName.valueOf(Bytes.toBytes(tableName); if(!admin.tableExists(tableNameObj) TableDescriptorBuilder build