Hbase(六) hbase Java API
一、
几个主要 Hbase API 类和数据模型之间的对应关系:
1、 HBaseAdmin
关系: org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删 除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。
2、 HBaseConfiguration
关系: org.apache.hadoop.hbase.HBaseConfiguration
作用:对 HBase 进行配置
3、 HTableDescriptor
关系: org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字极其对应表的列族
4、 HColumnDescriptor
关系: org.apache.hadoop.hbase.HColumnDescriptor
作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添 加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。
列族被删除的时候,列族里面的数据也会同时被删除。
5、 HTable
关系: org.apache.hadoop.hbase.client.HTable
作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。
6、 Put
关系: org.apache.hadoop.hbase.client.Put
作用:用来对单个行执行添加操作
7、 Get
关系: org.apache.hadoop.hbase.client.Get
作用:用来获取单个行的相关信息
8、 Result
关系: org.apache.hadoop.hbase.client.Result
作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值 或者各种 Map 结构( key-value 对)
二、具体增删改查 代码具体实现:
package HbaseDome; import java.util.List; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
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.TableName;
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.protobuf.generated.ZooKeeperProtos.Table;
import org.apache.hadoop.hbase.util.Bytes; public class Hbasedome implements HBaseDemoInterface{ static Configuration conf =null;
private static final String ZKconnect="192.168.123.212:2181,192.168.123.213:2181,192.168.123.214:2181";
static{
conf=HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", ZKconnect);
}
// static String tableName="student";
// static String[] family={"lie01","lie02"}; public static void main(String[] args) {
Hbasedome a =new Hbasedome();
String tableName="student11";
String[] family={"lie01","lie02"};
try {
HTableDescriptor htds =new HTableDescriptor(tableName);
for(int z=0;z<family.length;z++){
HColumnDescriptor h=new HColumnDescriptor(family[z]);
htds.addFamily(h);
}
// a.descTable("table03");
// a.createTable(tableName, htds);
// a.descTable("table03");
// a.getAllTables();
// a.createTable(tableName,family);
// a.getResult("table03", "usr001");
// a.dropTable("user1");
// a.getAllTables();
// a.putData("table03", "usr005", "liezu01", "name", "liu");
// a.getResult("table03", "usr001");
// a.getResultScann("table03");
// a.getResultScann("table03",""); Result result = a.getResult("table03", "usr001");
System.out.println(result.toString());
List<Cell> cells = result.listCells();
for (int i = 0; i < cells.size(); i++) {
Cell cell = cells.get(i);
System.out.println(cell.toString());
// printCell(cell);
} // List<KeyValue> list = result.list();
// for (int i = 0; i < list.size(); i++) {
// KeyValue kv = list.get(i);
// printKeyValye(kv);
// }
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public static void printKeyValye(KeyValue kv) {
System.out.println(Bytes.toString(kv.getRow()) + "\t" + Bytes.toString(kv.getFamily()) + "\t" + Bytes.toString(kv.getQualifier()) + "\t" + Bytes.toString(kv.getValue()) + "\t" + kv.getTimestamp());
}
public static void printCell(Cell cell) {
System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier()) + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());
}
//创建表
@Override
public void createTable(String tableName, String[] family) throws Exception {
HBaseAdmin admin=new HBaseAdmin(conf);
HTableDescriptor desc =new HTableDescriptor(tableName); for(int i=0;i<family.length;i++){
desc.addFamily(new HColumnDescriptor(family[i]));
System.out.println("11111111111"+family[i]);
}
if(admin.tableExists(tableName)){
System.out.println("表已经存在,别瞎输行吗");
// System.exit(0);
}else{
admin.createTable(desc);
System.out.println("表创建成功");
}
} //创建表
@Override
public void createTable(String tableName, HTableDescriptor htds) throws Exception {
HBaseAdmin admin=new HBaseAdmin(conf);
boolean tableExists1 = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists1 ? "表已存在" : "表不存在");
admin.createTable(htds);
boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ? "创建表成功" : "创建失败");
} @Override
public void descTable(String tableName) throws Exception {
HBaseAdmin admin=new HBaseAdmin(conf);
HTable table=new HTable(conf, tableName);
HTableDescriptor desc =table.getTableDescriptor();
HColumnDescriptor[] columnFamilies = desc.getColumnFamilies(); for(HColumnDescriptor t:columnFamilies){
System.out.println(Bytes.toString(t.getName()));
} } //// 这种方式是替换该表tableName的所有列簇
@Override
public void modifyTable(String tableName) throws Exception {
HBaseAdmin admin=new HBaseAdmin(conf);
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));
htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));
admin.modifyTable(tableName, htd); // 删除该表tableName当中的特定的列簇
// admin.deleteColumn(tableName, "cf3"); System.out.println("修改成功"); } @Override
public void getAllTables() throws Exception {
HBaseAdmin admin =new HBaseAdmin(conf); String[] tableNames = admin.getTableNames();
for(int i=0;i<tableNames.length;i++){
System.out.println(tableNames[i]);
}
} //更新数据 插入数据
@Override
public void putData(String tableName, String rowKey, String familyName, String columnName, String value)
throws Exception {
HTable htable=new HTable(conf, Bytes.toBytes(tableName));
Put put=new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));
htable.put(put); } //为表添加数据
@Override
public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2,
String[] value2) throws Exception { Put put=new Put(Bytes.toBytes(rowKey));
HTable htable=new HTable(conf, Bytes.toBytes(tableName));
HColumnDescriptor[] columnFamilies = htable.getTableDescriptor().getColumnFamilies();
for(int i=0;i<=columnFamilies.length;i++){
String nameAsString = columnFamilies[i].getNameAsString();
if(nameAsString.equals("lie01")){
for(int j=0;j<column1.length;j++){
put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));
}
}
if(nameAsString.equals("lie02")){
for(int j=0;j<column2.length;j++){
put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));
}
} }
htable.put(put);
System.out.println("addData ok!");
} //根据rowkey 查询
@Override
public Result getResult(String tableName, String rowKey) throws Exception {
Get get=new Get(Bytes.toBytes(rowKey));
HTable htable=new HTable(conf, Bytes.toBytes(tableName));
Result result=htable.get(get);
// for(KeyValue k:result.list()){
// System.out.println(Bytes.toString(k.getFamily()));
// System.out.println(Bytes.toString(k.getQualifier()));
// System.out.println(Bytes.toString(k.getValue()));
// System.out.println(k.getTimestamp());
// }
return result;
} //查询指定的某列
@Override
public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {
Get get=new Get(Bytes.toBytes(rowKey));
HTable htable=new HTable(conf, Bytes.toBytes(tableName));
get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
Result result=htable.get(get);
for(KeyValue k:result.list()){
System.out.println(Bytes.toString(k.getFamily()));
System.out.println(Bytes.toString(k.getQualifier()));
System.out.println(Bytes.toString(k.getValue()));
System.out.println(k.getTimestamp());
}
return result;
} //遍历查询表
@Override
public ResultScanner getResultScann(String tableName) throws Exception { Scan scan=new Scan();
ResultScanner rs =null;
HTable htable=new HTable(conf, tableName);
try{
rs=htable.getScanner(scan);
for(Result r: rs){
for(KeyValue kv:r.list()){ System.out.println(Bytes.toString(kv.getRow()));
System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp());
}
}
}finally{
rs.close();
}
return rs;
} @Override
public ResultScanner getResultScann(String tableName, Scan scan) throws Exception { ResultScanner rs =null;
HTable htable=new HTable(conf, tableName);
try{
rs=htable.getScanner(scan);
for(Result r: rs){
for(KeyValue kv:r.list()){ System.out.println(Bytes.toString(kv.getRow()));
System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp());
}
}
}finally{
rs.close();
}
return rs;
} //查询表中的某一列
@Override
public Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName)
throws Exception { HTable htable=new HTable(conf, tableName);
Get get=new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
Result result=htable.get(get);
for(KeyValue kv: result.list()){ System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp()); }
return result;
} //查询某列数据的某个版本
@Override
public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName,
int versions) throws Exception { HTable htable=new HTable(conf, tableName);
Get get =new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
get.setMaxVersions(versions);
Result result=htable.get(get); for(KeyValue kv: result.list()){ System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp()); } return result;
} //删除指定某列
@Override
public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception { HTable htable=new HTable(conf, tableName);
// Delete delete1=new Delete(Bytes.toBytes(rowKey));
Delete de =new Delete(Bytes.toBytes(rowKey));
de.deleteColumn(Bytes.toBytes(falilyName), Bytes.toBytes(columnName));
htable.delete(de);
} //删除指定的某个rowkey
@Override
public void deleteColumn(String tableName, String rowKey) throws Exception {
HTable htable=new HTable(conf, tableName); Delete de =new Delete(Bytes.toBytes(rowKey));
htable.delete(de); } //让该表失效
@Override
public void disableTable(String tableName) throws Exception {
HBaseAdmin admin=new HBaseAdmin(conf);
admin.disableTable(tableName); } //删除表
@Override
public void dropTable(String tableName) throws Exception { HBaseAdmin admin=new HBaseAdmin(conf);
admin.disableTable(tableName);
admin.deleteTable(tableName); } }
package com.ghgj.hbase.test1610; import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
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.TableName;
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 HBaseAPIDemo1610 implements HBaseDemoInterface { private static final String ROWKEY = "p001";
private static final String ROWKEY2 = "p002";
private static final String FAMILY1 = "cf1";
private static final String FAMILY2 = "cf2";
private static final String KEY = "name";
private static final String VALUE = "huangbo"; private static final String TABLE_NAME = "person";
private static final String[] COLUMN_FAMILY = new String[] { FAMILY1, FAMILY2 }; static Configuration conf = null;
static HBaseAdmin admin = null;
static HTable table = null; static {
try {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "hadoop03:2181,hadoop04:2181,hadoop05:2181");
admin = new HBaseAdmin(conf);
table = new HTable(conf, TABLE_NAME); } catch (IOException e) {
// e.printStackTrace();
System.out.println("报错");
}
} public static void main(String[] args) throws Exception {
HBaseAPIDemo1610 hbase = new HBaseAPIDemo1610(); // 测试创建表
hbase.createTable(TABLE_NAME, COLUMN_FAMILY); // 测试创建表
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
for (int i = 0; i < COLUMN_FAMILY.length; i++) {
HColumnDescriptor cf1 = new HColumnDescriptor(COLUMN_FAMILY[i]);
htd.addFamily(cf1);
}
hbase.createTable(TABLE_NAME, htd); // 查看表属性
hbase.descTable(TABLE_NAME); // 查询所有的表
hbase.getAllTables(); // 测试修改表
hbase.modifyTable(TABLE_NAME); // 插入数据
hbase.putData(TABLE_NAME, ROWKEY, FAMILY1, KEY, VALUE); // 测试插入一堆数据
String[] column1 = new String[] { "name1", "age", "province" };
String[] value1 = new String[] { "huangbo", "33", "xinjiang" };
String[] column2 = new String[] { "gender" };
String[] value2 = new String[] { "male" };
hbase.addData(TABLE_NAME, ROWKEY2, column1, value1, column2, value2); // 通过rowkey查询数据
Result result = hbase.getResult(TABLE_NAME, ROWKEY2);
System.out.println(result.toString());
List<KeyValue> list = result.list();
for (int i = 0; i < list.size(); i++) {
KeyValue kv = list.get(i);
printKeyValye(kv);
} // 通过rowkey, family, province查询数据
Result result1 = hbase.getResult(TABLE_NAME, ROWKEY2, FAMILY1, "province");
List<Cell> cells = result1.listCells();
for (int i = 0; i < cells.size(); i++) {
Cell cell = cells.get(i);
printCell(cell);
} // 扫描全表数据
ResultScanner resultScann = hbase.getResultScann(TABLE_NAME);
printResultScanner(resultScann); /*Iterator<Result> iterator = resultScann.iterator();
while(iterator.hasNext()){
Result next = iterator.next();
}*/ // 通过scan扫描全表数据,scan中可以加入一些过滤条件
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes("user"));
scan.setStopRow(Bytes.toBytes("zk002"));
scan.setTimeRange(1488252774189l, 1488252774191l);
ResultScanner resultScann1 = hbase.getResultScann(TABLE_NAME, scan);
printResultScanner(resultScann1); // 两种方式查询最大版本数的hbase数据
Result resultByVersion = hbase.getResultByVersion(TABLE_NAME, ROWKEY, FAMILY1, "name", 3);
printResult(resultByVersion);
System.out.println("-------------------");
ResultScanner rs = hbase.getResultByVersion(ROWKEY, FAMILY1, "name", 3);
printResultScanner(rs); // 删除表
hbase.dropTable(TABLE_NAME);
} public static void printResultScanner(ResultScanner resultScann) {
for (Result result : resultScann) {
printResult(result);
}
} public static void printResult(Result result) {
List<Cell> cells = result.listCells();
for (int i = 0; i < cells.size(); i++) {
Cell cell = cells.get(i);
printCell(cell);
}
} public static void printCell(Cell cell) {
System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier()) + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());
} public static void printKeyValye(KeyValue kv) {
System.out.println(Bytes.toString(kv.getRow()) + "\t" + Bytes.toString(kv.getFamily()) + "\t" + Bytes.toString(kv.getQualifier()) + "\t" + Bytes.toString(kv.getValue()) + "\t" + kv.getTimestamp());
} // create 'tablename','cf1','cf2'
@Override
public void createTable(String tableName, String[] family) throws Exception {
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
for (int i = 0; i < family.length; i++) {
HColumnDescriptor cf1 = new HColumnDescriptor(family[i]);
htd.addFamily(cf1);
}
admin.createTable(htd);
boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ? "创建表成功" : "创建失败");
} @Override
public void createTable(String tableName, HTableDescriptor htd) throws Exception {
admin.createTable(htd);
boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ? "创建表成功" : "创建失败");
} // desc 'person'
@Override
public void descTable(String tableName) throws Exception {
HTableDescriptor tableDescriptor = table.getTableDescriptor();
HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();
for (HColumnDescriptor hcd : columnFamilies) {
// System.out.println(hcd.toString()+"\t");
System.out.println(Bytes.toString(hcd.getName()));
}
} @Override
public void modifyTable(String tableName) throws Exception {
// 这种方式是替换该表tableName的所有列簇
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));
htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));
admin.modifyTable(tableName, htd); // 删除该表tableName当中的特定的列簇
// admin.deleteColumn(tableName, "cf3"); System.out.println("修改成功");
} // list
@Override
public void getAllTables() throws Exception {
TableName[] listTableNames = admin.listTableNames();
for (TableName tn : listTableNames) {
System.out.println(tn.toString());
}
} // put 'tablename','rowkey','familyname:key','value'
@Override
public void putData(String tableName, String rowKey, String familyName, String columnName, String value) throws Exception {
// HTable table = new HTable(conf, 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("插入成功");
} /**
* @param tableName
* 表名
* @param rowKey
* rowkey
* @param column1
* 第一个列簇的key数组
* @param value1
* 第一个列簇的value数组,key数组和value数组长度必须一样
* @param column2
* 第二列簇的key数组
* @param value2
* 第二个列簇的values数组, 同上同理
* @throws Exception
*/
@Override
public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2, String[] value2) throws Exception {
List<Put> puts = new ArrayList<Put>(); for (int i = 0; i < column1.length; i++) {
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(FAMILY1), Bytes.toBytes(column1[i]), Bytes.toBytes(value1[i]));
puts.add(put);
} for (int i = 0; i < column2.length; i++) {
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(FAMILY2), Bytes.toBytes(column2[i]), Bytes.toBytes(value2[i]));
puts.add(put);
} table.put(puts);
System.out.println("插入一堆数据成功");
} // get 'tablename','rowkey'
@Override
public Result getResult(String tableName, String rowKey) throws Exception {
Get get = new Get(Bytes.toBytes(rowKey));
Result result = table.get(get);
return result;
} @Override
public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
Result result = table.get(get);
return result;
} @Override
public ResultScanner getResultScann(String tableName) throws Exception {
Scan scan = new Scan();
ResultScanner scanner = table.getScanner(scan);
// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY2));
// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY1),
// Bytes.toBytes("name1"));
return scanner;
} @Override
public ResultScanner getResultScann(String tableName, Scan scan) throws Exception {
return table.getScanner(scan);
} @Override
public Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName) throws Exception {
return null;
} // get 'person','p001',{COLUMNS => 'cf1:name', VERSIONS => 3}
@Override
public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName, int versions) throws Exception {
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
get.setMaxVersions(versions);
Result result = table.get(get);
return result;
} public ResultScanner getResultByVersion(String rowKey, String familyName, String columnName, int versions) throws Exception {
Scan scan = new Scan(Bytes.toBytes(rowKey), Bytes.toBytes(rowKey));
scan.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
scan.setMaxVersions(versions);
ResultScanner scanner = table.getScanner(scan);
return scanner;
} @Override
public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception { } @Override
public void deleteColumn(String tableName, String rowKey) throws Exception { } @Override
public void disableTable(String tableName) throws Exception {
admin.disableTable(tableName);
} @Override
public void dropTable(String tableName) throws Exception {
try {
admin.deleteTable(tableName);
} catch (Exception e) {
// e.printStackTrace();
disableTable(tableName);
admin.deleteTable(tableName);
System.out.println("ssssssss");
} finally {
boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ? "删除失败" : "删除成功");
}
}
}
Hbase(六) hbase Java API的更多相关文章
- HBase学习笔记——Java API操作
1.1. 配置 HBaseConfiguration 包:org.apache.hadoop.hbase.HBaseConfiguration 作用:通过此类可以对HBase进行配置 用法实例: C ...
- 六、Java API操作zookeeper节点
目录 前文 pom.xml文件增加依赖 新建java文件:ZookeeperTest GitHub文件下载 前文 一.CentOS7 hadoop3.3.1安装(单机分布式.伪分布式.分布式 二.JA ...
- HBase性能优化 Java Api
1. 使用“连接池” 如果每次和Hbase交互时都去新建连接的话,显然是低效率的,HBase也提供类连接池相关的API. 1.1. HTablePool 早期的API中使用它,但很不幸,现在它已经过时 ...
- HBase常用的JAVA API操作
为了方便以后查看,总结了一些常用的java操作hbase的代码: package com.mcq; import static org.hamcrest.CoreMatchers.describedA ...
- Hbase(6)【Java Api Phoenix操作Hbase】
目录 两种方式操作Phoenix 1.Thick Driver 2.Thin Driver 3.注意事项 两种方式操作Phoenix 官网:http://phoenix.apache.org/faq. ...
- HBase【操作Java api】
一.导入依赖 创建模块,导入以下依赖,maven默认编译版本是1.5,用1.8编译. pom.xml <dependencies> <dependency> <group ...
- HBase的常用Java API
1. 创建HBase表的对象 HBase表的对项名字叫HTable,创建它的方法有很多,常见的有如下: org.apache.hadoop.hbase.client.HTable hTable = n ...
- HBase(六): HBase体系结构剖析(上)
HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它仅能通过主键( ...
- 通过Java Api与HBase交互(转)
HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...
随机推荐
- python登录验证码生成及自动化测试规避
在用django写论坛的时候,需要有登录及注册功能. 故就登录界面后端需要生成随机验证码并传值给前端的代码进行编写如下. 验证码生成png需要调用到python的图形库 生成注册码img import ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- hive的简单使用
一.一些说明 1.支持的操作 hive 默认不支持updata 和 delete操作 insert也是执行缓慢,主要用于数据的计算 hive 数据类型---字符串,大部分与java一致. 2.内外表的 ...
- 网络流小结(HNOI2019之前)
\(\text{一:Dinic最大流}\) 最坏复杂度 \({\mathcal O(n^2m)}\) 一般可以处理 \(10^4\) ~ \(10^5\) 的网络. struct Edge { int ...
- Halcon如何保存仿射变换矩阵
这里我们通过序列化来实现的,如下图,写到硬盘的HomMat2D_1内容和从硬盘里HomMat2D_2读出的内容一致,源代码在图片下方. Halcon源代码: hom_mat2d_identity (H ...
- Professional Books
Machine Learning: Pattern Recognition and Machine Learning(PRML) https://mqshen.gitbooks.io/p ...
- java面向对象的栈 队列 优先级队列的比较
栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...
- PHP中的闭包详解
PHP闭包(Closure)使用详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-02我要评论 本篇文章介绍了,PHP闭包(Closure)的使用介绍,需要的朋友参考下 不知不 ...
- Java 学习笔记 ------第二章 从JDK到IDE
本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工 ...
- Java的继承,final关键字,super关键字
1.继承的初始化顺序: 父类—>父类的初始化对象中的属性—>父类的构造方法—>子类—>子类的初始化对象中的属性—>子类的构造方法 若有构造方法:则先执行属性,再执行构造方 ...