hbase的基本操作
关于在Linux系统下,对hbase数据库的增删改查,下列方法几乎全部包括了:
package com.HBase2.Dao;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotFoundException;
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.client.Delete;
import org.apache.hadoop.hbase.client.Get;
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.client.Table;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
import com.HBase2.Bean.Bean;
public class Dao {
public static Connection connection;
public static Configuration configuration;
public static Admin admin;
//**********连接操作**********
//连接
public static void init() {
configuration= HBaseConfiguration.create();
configuration.set("hbase.rootdir" ,"hdfs://localhost:9000/hbase");
try {
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
}catch(IOException e) {
e.printStackTrace();
}
}
//关闭连接
public static void close() {
try {
if(admin!=null)
{
admin.close();
}
if(null!=connection) {
connection.close();
}
}
catch(IOException e){
e.printStackTrace();
}
}
//***********命名空间************
//创建namespace
public static void createNamespace(String namespace) throws IOException {
init();
NamespaceDescriptor nDescriptor = NamespaceDescriptor.create(namespace).build();
admin.createNamespace(nDescriptor);
}
//查询所有namespace
public static ArrayList<String> listNamespace() throws IOException{
init();
NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors();
ArrayList<String> list = new ArrayList<>();
for(NamespaceDescriptor nd:namespaceDescriptors) {
System.out.println(nd.getName());
list.add(nd.getName());
}
return list;
}
//删除namespace
public static boolean dropNamespace(String namespace) {
init();
try {
admin.deleteNamespace(namespace);
close();
return true;
}catch(IOException e) {
e.printStackTrace();
close();
return false;
}
}
//************表操作************
//建表
public static void createTable(String student,String []score) throws IOException {
init();
TableName tableName = TableName.valueOf(student);
if(admin.tableExists(tableName)) {
System.out.println("该表已存在");
}
else {
HTableDescriptor hTableDescriptor = new HTableDescriptor(student);
for(String str:score) {
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str);
hTableDescriptor.addFamily(hColumnDescriptor);
}
admin.createTable(hTableDescriptor);
}
}
//增加
public static boolean insertData(String tablename,String rowkey,String colFamily,String col,String val){
init();
Table table;
try {
table = connection.getTable(TableName.valueOf(tablename));
Put put = new Put(Bytes.toBytes(rowkey));
put.addColumn(Bytes.toBytes(colFamily), Bytes.toBytes(col), Bytes.toBytes(val));
table.put(put);
table.close();
close();
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
close();
return false;
}
}
//查询
public static void getData(String tableName,String rowKey,String colFamily,String col) throws IOException {
init();
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));
//获取的result数据是结果集,还需要格式化输出想要的数据才行
Result result = table.get(get);
System.out.println(new String(result.getValue(colFamily.getBytes(), col==null?null:col.getBytes())));
table.close();
}
//获取所有列族
public static ArrayList<String> listColFamilies(String tablename) throws TableNotFoundException, IOException{
init();
HTableDescriptor tableDescriptor = admin.getTableDescriptor(TableName.valueOf(tablename));
HColumnDescriptor[] columnDescriptors = tableDescriptor.getColumnFamilies();
ArrayList<String> list = new ArrayList<>();
for(HColumnDescriptor hcd:columnDescriptors) {
System.out.println(hcd.getNameAsString());
list.add(hcd.getNameAsString());
}
return list;
}
//输出整列
public static void scanColumn(String tableName,String column) throws IOException
{
init();
Table table = connection.getTable(TableName.valueOf(tableName));
Scan scan = new Scan();
scan.addFamily(Bytes.toBytes(column));
ResultScanner scanner = table.getScanner(scan);
for(Result result = scanner.next();result !=null;result = scanner.next())
{
showCell(result);
}
table.close();
close();
}
public static void showCell(Result result) {
Cell[] cells = result.rawCells();
for(Cell cell:cells) {
System.out.println("Rowname:"+new String(CellUtil.cloneRow(cell))+" ");
System.out.println("Timetamp"+cell.getTimestamp()+" ");
System.out.println("colFamily"+new String(CellUtil.cloneFamily(cell))+" ");
System.out.println("row name:"+new String(CellUtil.cloneQualifier(cell))+" ");
System.out.println("value"+new String(CellUtil.cloneValue(cell))+" ");
}
}
//扫描数据
public static Iterator<Result> scan(String tablename) {
init();
try {
Table table = connection.getTable(TableName.valueOf(tablename));
Scan scan = new Scan();
// scan.setStartRow(Bytes.toBytes(startRow));
// scan.setStopRow(Bytes.toBytes(endrow));
ResultScanner scanner = table.getScanner(scan);
Iterator<Result> iterator = scanner.iterator();
return iterator;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//删除列族
public static boolean deleteColFamily(String tablename,String colname) {
init();
try {
admin.deleteColumn(TableName.valueOf(tablename), Bytes.toBytes(colname));
close();
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
close();
return false;
}
}
//删除行
public static void deleteRow(String tableName, String row) throws IOException {
init();
Table table = connection.getTable(TableName.valueOf(tableName));
Delete delete = new Delete(row.getBytes());
table.delete(delete);
table.close();
close();
}
//**********显示内容**********
//显示scan
public static Iterator<Result> showScan(Table table,Scan scan) {
ResultScanner scanner;
try {
scanner = table.getScanner(scan);
Iterator<Result> iterator = scanner.iterator();
return iterator;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//显示result
public static Bean showResult(Result result) {
CellScanner cellScanner = result.cellScanner();
Bean bean = new Bean();
Map<String,String> map = new HashMap<String,String>();
try {
while(cellScanner.advance()) {
Cell cell = cellScanner.current();
String rowkey = new String(CellUtil.cloneRow(cell));
String colFamily = new String(CellUtil.cloneFamily(cell));
String qualifier = new String(CellUtil.cloneQualifier(cell));
String value = new String(CellUtil.cloneValue(cell));
//System.out.println(rowkey+":"+colFamily+"."+qualifier+"="+value);
map.put(qualifier, value);
}
bean.setAddress(map.get("address"));
bean.setArea(map.get("area"));
bean.setBeginyear(map.get("beginyear"));
bean.setCode(map.get("code"));
bean.setEmail(map.get("email"));
bean.setEndyear(map.get("endyear"));
bean.setFax(map.get("fax"));
bean.setField(map.get("field"));
bean.setHezuoyixiang(map.get("hezuoyixing"));
bean.setInstiution(map.get("instiution"));
bean.setJsxqjjfs(map.get("jsxqjjfs"));
bean.setKeyword(map.get("keyword"));
bean.setLinkman(map.get("linkman"));
bean.setMoney(map.get("money"));
bean.setName(map.get("name"));
bean.setPhone(map.get("phone"));
bean.setProinstiution(map.get("proinstiution"));
bean.setRepresent(map.get("represent"));
bean.setRetype(map.get("retype"));
bean.setSubject(map.get("subject"));
bean.setSumdemand(map.get("sumdemand"));
bean.setTechdemand_coopera(map.get("techdemand_cooper"));
bean.setTechdemand_use(map.get("techdemand_use"));
bean.setUrl(map.get("url"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bean;
}
//迭代器result
public static ArrayList<Bean> showIterResult(Iterator<Result> iterator) {
ArrayList<Bean> list = new ArrayList<>();
while(iterator.hasNext()) {
Result result = iterator.next();
list.add(showResult(result));
}
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i).getAddress());
}
return list;
}
//**********过滤器**********
//创建单列值过滤器
public static SingleColumnValueFilter singleColumnValueFilter(String family,String qualifier,CompareFilter.CompareOp compareOp,String value,boolean isNull) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes(family), Bytes.toBytes(qualifier), compareOp, Bytes.toBytes(value));
filter.setFilterIfMissing(isNull);
return filter;
}
//过滤器链
public static Iterator<Result> filterList(String tablename,String type,SingleColumnValueFilter[] lists) {
FilterList filterList = null;
if(type.equals("and")) {
filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
}else if(type.equals("or")){
filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
}
for(SingleColumnValueFilter filter:lists) {
filterList.addFilter(filter);
}
Scan scan = new Scan();
scan.setFilter(filterList);
init();
try {
Table table = connection.getTable(TableName.valueOf(tablename));
return showScan(table, scan);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//String[] colFamily = new String[] {"score","age"};
// String tablename = "people";
// createTable(tablename,colFamily);
// insertData("majortech","001","colFamily","name","石家庄铁道大学");
// insertData("majortech","001","colFamily","address","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","url","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","email","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","represent","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","code","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","linkman","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","phone","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","fax","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","instiution","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","proinstiution","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","techdemand","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","sumdemand","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","retype","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","subject","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","field","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","techdemand_use","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","techdemand_cooper","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","jsxqjjfs","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","hezuoyixiang","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","money","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","beginyear","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","endyear","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","keyword","shijiazhaungtiedaodaxue");
// insertData("majortech","001","colFamily","area","shijiazhaungtiedaodaxue");
// getData("majortech", "001", "colFamily", "name");
// insertData("student", "001", "score", "english", "60");
// insertData(tablename, "001", "score", "math", "90");
// insertData(tablename, "001", "age", "now", "20");
// insertData(tablename, "001", "age", "last", "19");
// getData(tablename, "001", "score", "english");
// insertData(tablename, "001", "score", "english", "90");
// getData(tablename, "001", "score", "english");
// deleteData(tablename, "001", "score", "english");
// createNamespace("zdm");
// dropNamespace("ns3");
// listNamespace();
// listTables("default");
// deleteColFamily("people", "age");
// listColFamilies("people");
// dropTable("people");
// listTables("default");
// SingleColumnValueFilter s1 = singleColumnValueFilter("colFamily", "techdemand",CompareFilter.CompareOp.GREATER , "鐜嬪缓姘�", true);
// SingleColumnValueFilter s2 = singleColumnValueFilter("colFamily", "area",CompareFilter.CompareOp.EQUAL , "130100", true);
// SingleColumnValueFilter s3 = singleColumnValueFilter("colFamily", "name",CompareFilter.CompareOp.EQUAL , "鐭冲搴勯搧閬撳ぇ瀛�", true);
// SingleColumnValueFilter s4 = singleColumnValueFilter("colFamily", "keyword",CompareFilter.CompareOp.EQUAL , "鍗曚綅v鍔ㄤ笉鍔ㄥ氨鎴戠殑", true);
// SingleColumnValueFilter[] filters = new SingleColumnValueFilter[] {s1,s2,s3,s4};
// showIterResult(filterList("majortech", "or", filters));
// showIterResult(scan("majortech"));
// String student = "student";
// String score[] = {"english","math","chinese"};
// createTable(student,score);
// insertData("student","001","english","English","90");
// insertData("student","001","chinese","Chinese","80");
// insertData("student","001","math","Math","90");
// scanColumn("student","english");
// insertData("student","001","english","English2","85");
// insertData("student","001","english","English","85");
// deleteRow("student","001");
// insertData("Student","scofield","score","English","45");
// insertData("Student","scofield","score","Math","89");
// insertData("Student","scofield","score","Computer","100");
getData("Student", "scofield", "score", "English");
}
}

浙公网安备 33010602011771号