您的位置:首页 > 其它

HBase1.0.1.1 API与原来有所不同

2015-08-13 23:58 351 查看
packagecom.felix.hbaseapi_test;

/*
这是旧版的API操作
*/
publicclasshbaseapifelix{

publicstaticfinalStringTABLE_NAME="testapi";
publicstaticfinalStringCOLUMNFAMILY_NAME="cf";
publicstaticfinalStringROW_KEY="rowkey1";

publicstaticvoidmain(String[]args)throwsException{
Configurationconf=HBaseConfiguration.create();
HBaseAdminadmin=newHBaseAdmin(conf);
createtable(admin);
HTablehtable=newHTable(conf,TABLE_NAME);

put(htable,"age","25");
put(htable,"age","26");
put(htable,"age","27");
put(htable,"age","28");

//Get
Getget=newGet(ROW_KEY.getBytes());
htable.get(get);

//scan
Scanscan=newScan();
ResultScannerscanner=htable.getScanner(scan);
}

privatestaticvoidput(HTablehtable,Stringcolumn,Stringvalue)throwsIOException{
Putput=newPut(ROW_KEY.getBytes());
put.addColumn(COLUMNFAMILY_NAME.getBytes(),column.getBytes(),value.getBytes());
htable.put(put);
}

privatestaticvoidcreatetable(HBaseAdminadmin)throwsIOException{
HTableDescriptordesc=newHTableDescriptor(TABLE_NAME);
HColumnDescriptorfamily=newHColumnDescriptor(COLUMNFAMILY_NAME);
desc.addFamily(family);
family.setMaxVersions(3);
if(!admin.tableExists(TABLE_NAME)){
//该表不存在,直接创建
admin.createTable(desc);
}else{
//该表存在,删除后再创建
if(!admin.isTableAvailable(TABLE_NAME)){
//该表disable,直接删除
admin.deleteTable(TABLE_NAME);
}else{
//该表enable,先disable,再删除
admin.disableTable(TABLE_NAME);
admin.deleteTable(TABLE_NAME);
}
admin.createTable(desc);
}
}

}




packagecom.felix.hbaseapi_test;

importjava.io.IOException;

importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.hbase.HBaseConfiguration;
importorg.apache.hadoop.hbase.HColumnDescriptor;
importorg.apache.hadoop.hbase.HTableDescriptor;
importorg.apache.hadoop.hbase.TableName;
importorg.apache.hadoop.hbase.client.Admin;
importorg.apache.hadoop.hbase.client.Connection;
importorg.apache.hadoop.hbase.client.ConnectionFactory;
importorg.apache.hadoop.hbase.client.Get;
importorg.apache.hadoop.hbase.client.Put;
importorg.apache.hadoop.hbase.client.Result;
importorg.apache.hadoop.hbase.client.ResultScanner;
importorg.apache.hadoop.hbase.client.Scan;
importorg.apache.hadoop.hbase.client.Table;

publicclasshbaseapifelix{

publicstaticfinalStringTABLE_NAME="testapi";
publicstaticfinalStringCOLUMNFAMILY_NAME="cf";
publicstaticfinalStringROW_KEY="rowkey1";

publicstaticvoidmain(String[]args)throwsException{
Configurationconf=HBaseConfiguration.create();
//下面的配置,在configuration文件中都配置过了这里没必要配置,也不方便
//conf.set("hbase.rootdir","hdfs://centos:9000/hbase");
//conf.set("hbase.zookeeper.quorum","centos");
//conf.set("hbase.zookeeper.property.clientPort","2181");

Connectionconnection=ConnectionFactory.createConnection(conf);
Adminadmin=connection.getAdmin();
Tabletable=connection.getTable(TableName.valueOf("user"));
TableNamename=table.getName();

initBeforeCreate(admin,name);
createTable(admin,table);

try{
Putput=newPut("rowkey".getBytes());
put.addColumn(COLUMNFAMILY_NAME.getBytes(),"age".getBytes(),"25".getBytes());
put.addColumn(COLUMNFAMILY_NAME.getBytes(),"age".getBytes(),"26".getBytes());
put.addColumn(COLUMNFAMILY_NAME.getBytes(),"age".getBytes(),"27".getBytes());
put.addColumn(COLUMNFAMILY_NAME.getBytes(),"age".getBytes(),"28".getBytes());
table.put(put);
}finally{
table.close();
connection.close();
}

Getget=newGet(ROW_KEY.getBytes());
Resultresult=table.get(get);

Scanscan=newScan();
ResultScannerscanner=table.getScanner(scan);

/*HBaseAdminadmin=newHBaseAdmin(conf);
createtable(admin);

HTablehtable=newHTable(conf,TABLE_NAME);

put(htable,"age","25");
put(htable,"age","26");
put(htable,"age","27");
put(htable,"age","28");

//Get
Getget=newGet(ROW_KEY.getBytes());
htable.get(get);

//scan
Scanscan=newScan();
ResultScannerscanner=htable.getScanner(scan);*/
}

privatestaticvoidinitBeforeCreate(Adminadmin,TableNamename)
throwsIOException{
/*创建前存在就删除
**/
if(admin.tableExists(name)){
if(admin.isTableEnabled(name)){
admin.disableTable(name);
}
admin.deleteTable(name);
}
}

privatestaticvoidcreateTable(Adminadmin,Tabletable)
throwsIOException{
HTableDescriptordesc=newHTableDescriptor(table.getName());
HColumnDescriptorfamily=newHColumnDescriptor(COLUMNFAMILY_NAME);
family.setMaxVersions(3);
family.setMinVersions(0);
desc.addFamily(family);
admin.createTable(desc);
}

/*privatestaticvoidput(HTablehtable,Stringcolumn,Stringvalue)throwsIOException{
Putput=newPut(ROW_KEY.getBytes());
put.addColumn(COLUMNFAMILY_NAME.getBytes(),column.getBytes(),value.getBytes());
htable.put(put);
}

privatestaticvoidcreatetable(HBaseAdminadmin)throwsIOException{
HTableDescriptordesc=newHTableDescriptor(TABLE_NAME);
HColumnDescriptorfamily=newHColumnDescriptor(COLUMNFAMILY_NAME);
desc.addFamily(family);
family.setMaxVersions(3);
if(!admin.tableExists(TABLE_NAME)){
//该表不存在,直接创建
admin.createTable(desc);
}else{
//该表存在,删除后再创建
if(!admin.isTableAvailable(TABLE_NAME)){
//该表disable,直接删除
admin.deleteTable(TABLE_NAME);
}else{
//该表enable,先disable,再删除
admin.disableTable(TABLE_NAME);
admin.deleteTable(TABLE_NAME);
}
admin.createTable(desc);
}
}*/

}


具体改成什么了,以及为什么修改,源码里面说的很清楚,比如:

HBaseAdminisnolongeraclientAPI.ItismarkedInterfaceAudience.Privateindicatingthat
*thisisanHBase-internalclassasdefinedin
*https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/InterfaceClassification.html*Therearenoguaranteesforbackwardssource/binarycompatibilityandmethodsorclasscan
*changeorgoawaywithoutdeprecation.
*Use{@linkConnection#getAdmin()}toobtainaninstanceof{@linkAdmin}insteadofconstructing
*anHBaseAdmindirectly.

其他的自己关联源码自己看吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: