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.TableName;
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;
import org.apache.hadoop.hbase.util.Pair; import java.io.IOException; /**
* 修改表结构
*/
public class ModifyStructOfTable {
public static void main(String args[]) throws IOException{
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
Admin admin = connection.getAdmin();
//
TableName tableName=TableName.valueOf("testtable2b"); //列族
HColumnDescriptor coldef1 = new HColumnDescriptor("colfam1");
//表
HTableDescriptor desc = new HTableDescriptor(tableName).addFamily(coldef1).setValue("Description", "ModifyTableExample: Original Table"); //Create the table with the original structure and 50 regions.
admin.createTable(desc, Bytes.toBytes(1L),Bytes.toBytes(10000L),50);
//表描述
HTableDescriptor htd1 = admin.getTableDescriptor(tableName);
//列族2
HColumnDescriptor coldef2 = new HColumnDescriptor("colfam2");
//
htd1.addFamily(coldef2).setMaxFileSize(1024*1024*1024L).setValue("Description","ModifyTableExample: Modified Table");
admin.disableTable(tableName);
//更改表
admin.modifyTable(tableName,htd1); Pair<Integer, Integer> status = new Pair<Integer, Integer>() {{
setFirst(50);
setSecond(50);
}}; for (int i = 0; status.getFirst() != 0 && i < 500; i++) {
status = admin.getAlterStatus(desc.getTableName());
if (status.getSecond() != 0) {
int pending = status.getSecond() - status.getFirst();
System.out.println(pending + " of " + status.getSecond() + " regions updated.");
try {
Thread.sleep(1 * 1000l);
}catch (Exception e){
System.out.println(e.getMessage());
}
} else {
System.out.println("All regions updated.");
break; }
}
if (status.getFirst() != 0) {
throw new IOException("Failed to update regions after 500 sec‐ onds.");
}
admin.enableTable(tableName);
HTableDescriptor htd2 = admin.getTableDescriptor(tableName);
System.out.println("Equals: " + htd1.equals(htd2));
System.out.println("New schema: " + htd2); }
}
/**
50 of 50 regions updated.
2016-08-30 17:08:08,541 INFO [main] client.HBaseAdmin: Started enable of testtable2b
2016-08-30 17:08:10,869 INFO [main] client.HBaseAdmin: Enabled testtable2b
Equals: true
New schema: 'testtable2b', {TABLE_ATT shell:
=========
hbase(main):048:0> desc 'testtable2b'
Table testtable2b is ENABLED
testtable2b, {TABLE_ATTRIBUTES => {MAX_FILESIZE => '1073741824', METADATA => {'Description' => 'ModifyTableExample: Modified Table'}}
COLUMN FAMILIES DESCRIPTION
{NAME => 'colfam1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_D
ELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
{NAME => 'colfam2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '1', TTL => 'FOREVER', MIN_VERSIONS => '0', KEEP_D
ELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
2 row(s) in 0.0340 seconds **/

最新文章

  1. mysqldump 备份命令使用中的一些经验总结
  2. Query Mobile学习笔记
  3. JavaScript Patterns 6.5 Inheritance by Copying Properties
  4. Storm系列(二):使用Csharp创建你的第一个Storm拓扑(wordcount)
  5. 获取http请求响应头
  6. Qt持久性对象进行序列化
  7. PHP查看在线服务器与本地服务器支持函数差别
  8. Windows,查看进程的连接的IP地址,批量模式,最后做成Excel
  9. RChain的Casper共识算法
  10. 使用Tornado异步接入第三方(支付宝)支付
  11. mysql My SQL获取某个表的列名
  12. May 25. 2018 Week 21st Friday
  13. JSAP106
  14. 2017-07-29 中文代码示例教程之Java编程一天入门
  15. Jmeter(八)-发送JDBC请求
  16. MyEclipse如何恢复删掉的文件
  17. P1896 [SCOI2005]互不侵犯
  18. PHP 操作MySQL时mysql_connect( )和Mysqli( )的两种报错机制
  19. sqlite数据库部署到服务器上的问题
  20. OpenStack 业务链networking-sfc介绍 (2) - 底层原理

热门文章

  1. 转: KindEditor 图片空间文件增加删除文件、文件夹功能(ASP语言环境)
  2. C# base64编码的文本与图片互转
  3. select2插件的使用
  4. HTTP协议上传boundary确定&amp;下载content-disposition理解
  5. AngularJS Best Practices: SEO
  6. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享
  7. 使用复合索引代替单键索引,来避免单键有null值的情况
  8. SQL*Plus命令行工具连接Oracle数据库
  9. composer--------------今天遇到几个奇葩问题,记录一下
  10. POJ - 2183 Bovine Math Geniuses