import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
/**
*
* @author yankai913@gmail.com
* @date 2014-4-28
*/
public class SimpleClient {
static final String rowKey = "row1" ;
static HBaseAdmin hBaseAdmin;
static Configuration conf;
static {
conf = HBaseConfiguration.create();
conf.set( "hbase.zookeeper.quorum" , "love-kaige" );
try {
hBaseAdmin = new HBaseAdmin(conf);
}
catch (MasterNotRunningException e) {
e.printStackTrace();
}
catch (ZooKeeperConnectionException e) {
e.printStackTrace();
}
}
public static void createTable(String tableName, String[] columns) throws Exception {
dropTable(tableName);
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
for (String columnName : columns) {
HColumnDescriptor column = new HColumnDescriptor(columnName);
hTableDescriptor.addFamily(column);
}
hBaseAdmin.createTable(hTableDescriptor);
System.out.println( "create table successed" );
}
public static void dropTable(String tableName) throws Exception {
if (hBaseAdmin.tableExists(tableName)) {
hBaseAdmin.disableTable(tableName);
hBaseAdmin.deleteTable(tableName);
}
System.out.println( "drop table successed" );
}
public static HTable getHTable(String tableName) throws Exception {
return new HTable(conf, tableName);
}
public static void insert(String tableName, Map<String, String> map) throws Exception {
HTable hTable = getHTable(tableName);
byte [] row1 = Bytes.toBytes(rowKey);
Put p1 = new Put(row1);
for (String columnName : map.keySet()) {
byte [] value = Bytes.toBytes(map.get(columnName));
String[] str = columnName.split( ":" );
byte [] family = Bytes.toBytes(str[ 0 ]);
byte [] qualifier = null ;
if (str.length > 1 ) {
qualifier = Bytes.toBytes(str[ 1 ]);
}
p1.add(family, qualifier, value);
}
hTable.put(p1);
Get g1 = new Get(row1);
Result result = hTable.get(g1);
System.out.println( "Get: " + result);
System.out.println( "insert successed" );
}
public static void delete(String tableName, String rowKey) throws Exception {
HTable hTable = getHTable(tableName);
List<Delete> list = new ArrayList<Delete>();
Delete d1 = new Delete(Bytes.toBytes(rowKey));
list.add(d1);
hTable.delete(list);
Get g1 = new Get(Bytes.toBytes(rowKey));
Result result = hTable.get(g1);
System.out.println( "Get: " + result);
System.out.println( "delete successed" );
}
public static void selectOne(String tableName, String rowKey) throws Exception {
HTable hTable = getHTable(tableName);
Get g1 = new Get(Bytes.toBytes(rowKey));
Result result = hTable.get(g1);
foreach(result);
System.out.println( "selectOne end" );
}
private static void foreach(Result result) throws Exception {
for (KeyValue keyValue : result.raw()) {
StringBuilder sb = new StringBuilder();
sb.append(Bytes.toString(keyValue.getRow())).append( "\t" );
sb.append(Bytes.toString(keyValue.getFamily())).append( "\t" );
sb.append(Bytes.toString(keyValue.getQualifier())).append( "\t" );
sb.append(keyValue.getTimestamp()).append( "\t" );
sb.append(Bytes.toString(keyValue.getValue())).append( "\t" );
System.out.println(sb.toString());
}
}
public static void selectAll(String tableName) throws Exception {
HTable hTable = getHTable(tableName);
Scan scan = new Scan();
ResultScanner resultScanner = null ;
try {
resultScanner = hTable.getScanner(scan);
for (Result result : resultScanner) {
foreach(result);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (resultScanner != null ) {
resultScanner.close();
}
}
System.out.println( "selectAll end" );
}
public static void main(String[] args) throws Exception {
String tableName = "tableTest" ;
String[] columns = new String[] { "column_A" , "column_B" };
createTable(tableName, columns);
Map<String, String> map = new HashMap<String, String>();
map.put( "column_A" , "AAA" );
map.put( "column_B:1" , "b1" );
map.put( "column_B:2" , "b2" );
insert(tableName, map);
selectOne(tableName, rowKey);
selectAll(tableName);
delete(tableName, rowKey);
dropTable(tableName);
}
|