Hbase For Java详解大数据

package cn.hwadee.wuyang.hbase.utils; 
import java.io.IOException; 
import java.util.Iterator; 
import java.util.List; 
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.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; 
public class HbaseUtil { 
static Configuration conf=null; 
static{ 
conf = HBaseConfiguration.create(); 
//conf.set("hbase.rootdir", "hdfs://centos201:9000/hbase");   
conf.set("hbase.zookeeper.quorum", "centos201"); //必须加这个,不然无法定位 
//conf.set("hbase.zookeeper.property.clientPort", "2181"); 
} 
/*   
* 创建表   
*    
* @tableName 表名   
*    
* @family 列族列表   
*/   
public static Boolean creatTable(String tableName, String[] family)   
throws Exception {   
@SuppressWarnings({ "resource", "deprecation" }) 
HBaseAdmin admin = new HBaseAdmin(conf); 
@SuppressWarnings("deprecation") 
HTableDescriptor desc = new HTableDescriptor(tableName);   
for (int i = 0; i < family.length; i++) {   
desc.addFamily(new HColumnDescriptor(family[i]));   
}   
if (admin.tableExists(tableName)) {   
System.out.println("table Exists!");   
return false; 
} else {   
admin.createTable(desc);   
System.out.println("create table Success!"); 
return true; 
}   
} 
/*   
* 为表添加数据(适合知道有多少列族的固定表)   
*    
* @rowKey rowKey   
*    
* @tableName 表名   
*    
* @column1 第一个列族列表   
*    
* @value1 第一个列的值的列表   
*    
* @column2 第二个列族列表   
*    
* @value2 第二个列的值的列表   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void addData(String rowKey, String tableName,   
String[] column1, String[] value1, String[] column2, String[] value2)   
throws IOException {   
Put put = new Put(Bytes.toBytes(rowKey));// 设置rowkey   
HTable table = new HTable(conf, Bytes.toBytes(tableName));// HTabel负责跟记录相关的操作如增删改查等//   
// 获取表   
HColumnDescriptor[] columnFamilies = table.getTableDescriptor() // 获取所有的列族   
.getColumnFamilies();   
for (int i = 0; i < columnFamilies.length; i++) {   
String familyName = columnFamilies[i].getNameAsString(); // 获取列族名   
if (familyName.equals("familytest1")) { // familytest1列族put数据   
for (int j = 0; j < column1.length; j++) {   
put.add(Bytes.toBytes(familyName),   
Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j]));   
}   
}   
if (familyName.equals("familytest2")) { // familytest2列族put数据   
for (int j = 0; j < column2.length; j++) {   
put.add(Bytes.toBytes(familyName),   
Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j]));   
}   
}   
}   
table.put(put);   
System.out.println("add data Success!");   
}   
/*   
* 根据rwokey查询   
*    
* @rowKey rowKey   
*    
* @tableName 表名   
*/   
@SuppressWarnings({ "deprecation", "resource" }) 
public static Result getResult(String tableName, String rowKey)   
throws IOException {   
Get get = new Get(Bytes.toBytes(rowKey));   
HTable table = new HTable(conf, Bytes.toBytes(tableName));// 获取表   
Result result = table.get(get);   
for (KeyValue kv : result.list()) {   
System.out.println("family:" + Bytes.toString(kv.getFamily()));   
System.out   
.println("qualifier:" + Bytes.toString(kv.getQualifier()));   
System.out.println("value:" + Bytes.toString(kv.getValue()));   
System.out.println("Timestamp:" + kv.getTimestamp());   
System.out.println("-------------------------------------------");   
}   
return result;   
}   
/*   
* 遍历查询hbase表   
*    
* @tableName 表名   
*/   
@SuppressWarnings({ "deprecation", "resource" }) 
public static void getResultScann(String tableName) throws IOException {   
Scan scan = new Scan();   
ResultScanner rs = null;   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
try {   
rs = table.getScanner(scan);   
for (Result r : rs) {   
for (KeyValue kv : r.list()) {   
System.out.println("row:" + Bytes.toString(kv.getRow()));   
System.out.println("family:"   
+ Bytes.toString(kv.getFamily()));   
System.out.println("qualifier:"   
+ Bytes.toString(kv.getQualifier()));   
System.out   
.println("value:" + Bytes.toString(kv.getValue()));   
System.out.println("timestamp:" + kv.getTimestamp());   
System.out   
.println("-------------------------------------------");   
}   
}   
} finally {   
rs.close();   
}   
} 
/*   
* 遍历查询hbase表   
*    
* @tableName 表名   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void getResultScann(String tableName, String start_rowkey,   
String stop_rowkey) throws IOException {   
Scan scan = new Scan();   
scan.setStartRow(Bytes.toBytes(start_rowkey));   
scan.setStopRow(Bytes.toBytes(stop_rowkey));   
ResultScanner rs = null;   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
try {   
rs = table.getScanner(scan);   
for (Result r : rs) {   
for (KeyValue kv : r.list()) {   
System.out.println("row:" + Bytes.toString(kv.getRow()));   
System.out.println("family:"   
+ Bytes.toString(kv.getFamily()));   
System.out.println("qualifier:"   
+ Bytes.toString(kv.getQualifier()));   
System.out   
.println("value:" + Bytes.toString(kv.getValue()));   
System.out.println("timestamp:" + kv.getTimestamp());   
System.out   
.println("-------------------------------------------");   
}   
}   
} finally {   
rs.close();   
}   
} 
/*   
* 查询表中的某一列   
*    
* @tableName 表名   
*    
* @rowKey rowKey   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void getResultByColumn(String tableName, String rowKey,   
String familyName, String columnName) throws IOException {   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
Get get = new Get(Bytes.toBytes(rowKey));   
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); // 获取指定列族和列修饰符对应的列   
Result result = table.get(get);   
for (KeyValue kv : result.list()) {   
System.out.println("family:" + Bytes.toString(kv.getFamily()));   
System.out   
.println("qualifier:" + Bytes.toString(kv.getQualifier()));   
System.out.println("value:" + Bytes.toString(kv.getValue()));   
System.out.println("Timestamp:" + kv.getTimestamp());   
System.out.println("-------------------------------------------");   
}   
}  
/*   
* 更新表中的某一列   
*    
* @tableName 表名   
*    
* @rowKey rowKey   
*    
* @familyName 列族名   
*    
* @columnName 列名   
*    
* @value 更新后的值   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void updateTable(String tableName, String rowKey,   
String familyName, String columnName, String value)   
throws IOException {   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
Put put = new Put(Bytes.toBytes(rowKey));   
put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName),   
Bytes.toBytes(value));   
table.put(put);   
System.out.println("update table Success!");   
}  
/*   
* 查询某列数据的多个版本   
*    
* @tableName 表名   
*    
* @rowKey rowKey   
*    
* @familyName 列族名   
*    
* @columnName 列名   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void getResultByVersion(String tableName, String rowKey,   
String familyName, String columnName) throws IOException {   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
Get get = new Get(Bytes.toBytes(rowKey));   
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));   
get.setMaxVersions(5);   
Result result = table.get(get);   
for (KeyValue kv : result.list()) {   
System.out.println("family:" + Bytes.toString(kv.getFamily()));   
System.out   
.println("qualifier:" + Bytes.toString(kv.getQualifier()));   
System.out.println("value:" + Bytes.toString(kv.getValue()));   
System.out.println("Timestamp:" + kv.getTimestamp());   
System.out.println("-------------------------------------------");   
}   
List<?> results = table.get(get).list();  
Iterator<?> it =  results.iterator(); while (it.hasNext()) {   
System.out.println(it.next().toString()); }   
}   
/*   
* 删除指定的列   
*    
* @tableName 表名   
*    
* @rowKey rowKey   
*    
* @familyName 列族名   
*    
* @columnName 列名   
*/   
@SuppressWarnings({ "deprecation", "resource" }) 
public static void deleteColumn(String tableName, String rowKey,   
String falilyName, String columnName) throws IOException {   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
Delete deleteColumn = new Delete(Bytes.toBytes(rowKey));   
deleteColumn.deleteColumns(Bytes.toBytes(falilyName),   
Bytes.toBytes(columnName));   
table.delete(deleteColumn);   
System.out.println(falilyName + ":" + columnName + "is deleted!");   
}  
/*   
* 删除所有的列   
*    
* @tableName 表名   
*    
* @rowKey rowKey   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void deleteAllColumn(String tableName, String rowKey)   
throws IOException {   
HTable table = new HTable(conf, Bytes.toBytes(tableName));   
Delete deleteAll = new Delete(Bytes.toBytes(rowKey));   
table.delete(deleteAll);   
System.out.println("all columns are deleted!");   
}  
/*   
* 删除表   
*    
* @tableName 表名   
*/   
@SuppressWarnings({ "resource", "deprecation" }) 
public static void deleteTable(String tableName) throws IOException {   
HBaseAdmin admin = new HBaseAdmin(conf);   
admin.disableTable(tableName);   
admin.deleteTable(tableName);   
System.out.println(tableName + "is deleted!");   
}   
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/9073.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论