import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HBaseClient {
static protected Configuration conf;
protected HBaseAdmin admin;
protected HTable hTable;
protected List<String> columnFamilies;
static {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "gs-server-v-129,gs-server-v-128,gs-server-v-127");
conf.set("hbase.zookeeper.property.clientProt", "2181");
}
public void init() throws MasterNotRunningException, ZooKeeperConnectionException {
admin = new HBaseAdmin(conf);
}
public void createTable(String tableName,List<String> columnFamilies) throws IOException {
this.columnFamilies = columnFamilies;
if(!admin.tableExists(tableName)){
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName.getBytes());
for(String columnFamily : this.columnFamilies){
hTableDescriptor.addFamily(new HColumnDescriptor(columnFamily));
}
admin.createTable(hTableDescriptor);
hTable = new HTable(conf,tableName);
}
}
public void connectTable(String tableName) throws IOException {
init();
hTable = new HTable(conf,tableName);
}
public void deleteTable(String tableName) throws IOException {
if(admin.tableExists(tableName)){
admin.disableTable(tableName);
admin.deleteTable(tableName);
}
}
public void addColumnFamilies(List<String> columnFamilies){
this.columnFamilies.addAll(columnFamilies);
}
public void addColumnFamily(String columnFamily){
this.columnFamilies.add(columnFamily);
}
public void insert(String rowKey,String columnFamily,String column,String value ) throws IOException {
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(columnFamily),Bytes.toBytes(column),Bytes.toBytes(value));
hTable.put(put);
}
public Map<byte[],byte[]> getScanner(String family) throws IOException {
Map<byte[],byte[]> map = new HashMap<byte[],byte[]>();
for(Result row:hTable.getScanner(family.getBytes())){
for(Map.Entry<byte[],byte[]> entry : row.getFamilyMap(family.getBytes()).entrySet()){
map.put(entry.getKey(),entry.getValue());
}
}
return map;
}
public String get(String family,String column) throws IOException {
for(Result row:hTable.getScanner(family.getBytes())){
for(Map.Entry<byte[],byte[]> entry : row.getFamilyMap(family.getBytes()).entrySet()){
if(column.equals(new String(entry.getKey()))){
return new String(entry.getValue());
}
}
}
return null;
}
}
HBaseClient
最新推荐文章于 2024-05-20 18:06:58 发布