hbaseでのjavaクライアント操作
16458 ワード
JAva操作hbaseのプロファイル
4.0.0
org.example
doit15-hbase
1.0-SNAPSHOT
UTF-8
1.8
1.8
org.apache.zookeeper
zookeeper
3.4.6
junit
junit
4.12
compile
org.apache.hbase
hbase-client
2.0.4
org.apache.hadoop
hadoop-client
2.7.7
org.apache.hadoop
hadoop-common
2.7.7
org.apache.hbase
hbase-server
2.0.4
org.apache.hbase
hbase-mapreduce
2.0.4
com.google.code.gson
gson
2.8.5
org.apache.phoenix
phoenix-core
5.0.0-HBase-2.0
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.8
1.8
org.apache.maven.plugins
maven-assembly-plugin
2.6
jar-with-dependencies
make-assembly
package
single
クライアントデータの取得
package doit01;
import Utils.HbaseUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
public class GatDt {
public static void main(String[] args) throws IOException {
//
Configuration conf = HBaseConfiguration.create();
// zk , zookeeper
conf.set("hbase.zookpeer.quorum","linux01:2181,linux02:2181,linux03:2181");
// , hbase
//ConnectionFactory hbase
//createConnection()
Connection conn = ConnectionFactory.createConnection(conf);
// TableName tableName = new TableName(); TableName private new
// ,
//
TableName tb_user = TableName.valueOf("tb_user");
Table user = conn.getTable(tb_user);//
// , user
// get , ,
// ,
Get get = new Get("rk001".getBytes());// hbase
// ,
// s s
Result result = user.get(get);
HbaseUtils.showData(result);
//getTable() tableName,getTable table, new tableName
//Table tb_user = conn.getTable("tb_user".getBytes());
//result.advance()
//result.current
while (result.advance()){
// : v:
Cell cell = result.current();
/*byte[] rowArray = cell.getRowArray();//
byte[] familyArray = cell.getFamilyArray();//
byte[] qualifierArray = cell.getQualifierArray();//
byte[] valueArray = cell.getValueArray();// */
// , ,CellUtil
byte[] family = CellUtil.cloneFamily(cell);//
byte[] qualifier = CellUtil.cloneQualifier(cell);//
byte[] value = CellUtil.cloneValue(cell);//
byte[] row = CellUtil.cloneRow(cell);//
System.out.println(new String(qualifier)+"----"+new String(value)+new String(family)+new String(row));
}
user.close();
conn.close();
}
}
JAvaクライアントはhbaseで値を取り、
1.プロファイルの取得
2.接続zookpeer
3.プロファイルとzkに基づいて、接続オブジェクトを作成する
4.テーブル名を呼び出します.テーブル名を各ストレージスペースに変更する必要があります.
5.次に接続オブジェクトを作成した後、接続オブジェクトを使用してテーブルを取得します.
6.このテーブルから1行のデータを呼び出し、1行をrowkeyで表します.
7.この行のデータを取り出してresultを返す
8.このresultはこの行のデータを表し、
9.次の行が存在する場合は、その行のデータを呼び出してセルを返します.
10.セルの中身を解析し、中身を呼び出す
11.印刷
package doit16;
import Utils.HbaseUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
public class GetTableData {
public static void main(String[] args) throws IOException {
//
Configuration conf = HBaseConfiguration.create();
// zookpeer
conf.set("hbase.zookeeper.quorum", "linux01:2181,linux02:2181,linux03:2181");
// , hbase
Connection conn = ConnectionFactory.createConnection(conf);
//api tableName, , , ,
TableName tb_user = TableName.valueOf("tb_user");
//hbase , hbase getTable hbase ,
Table user = conn.getTable(tb_user);
//
Get get = new Get("rk002".getBytes());
// get
Result result = user.get(get);
//HbaseUtils.showData(result);
// p , cell
// CellUtil ,
//
while(result.advance()){
// K : : V:
Cell cell = result.current();
byte[] row = CellUtil.cloneRow(cell); //
byte[] family = CellUtil.cloneFamily(cell); //
byte[] qua = CellUtil.cloneQualifier(cell); //
byte[] v = CellUtil.cloneValue(cell); //
System.out.println(new String(qua)+"--"+new String(v));
}
user.close();
conn.close();
}
}
テーブルの作成
import Utils.HbaseUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
/**
* ,
* 1.
* 2. , ,
* 3. , , , , ,
* 4. ,
*/
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//admin: ,
//table get scan put
public class TableDemo {
public static void main(String[] args) throws Exception {
//
Admin admin = HbaseUtils.getHbaseAdmin();
// stu
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu"));
//
ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf1"));
//
familyDescriptorBuilder.setMaxVersions(5);
familyDescriptorBuilder.setTimeToLive(240);
//
ColumnFamilyDescriptor columnFamilyDescriptor = familyDescriptorBuilder.build();
//
tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor);
//
TableDescriptor tableDescriptor = tableDescriptorBuilder.build(); //tableDescriptor
//
//
admin.createTable(tableDescriptor); //
admin.close();
}
}
プリディビジョンオブジェクト
public static void main(String[] args) throws Exception {
//
Admin admin = HbaseUtils.getHbaseAdmin();
// CreateTable(admin);
// admin.close();
// region
//1.
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu3"));
//
ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf3"));
//
familyDescriptorBuilder.setMaxVersions(5);
//
ColumnFamilyDescriptor familyDescriptor = familyDescriptorBuilder.build();
//
tableDescriptorBuilder.setColumnFamily(familyDescriptor);
//
TableDescriptor build = tableDescriptorBuilder.build();
// region
// , region
byte[][] keys = new byte[][] {"rk025".getBytes(),"rk051".getBytes()};
admin.createTable(build,keys);
admin.close();
}
プリスコアregion、つまり1つのデータテーブルが非常に大きい場合、同時に1つのregionに挿入するとホットな問題が発生します.解決策は、データテーブルをマルチスコアに分割し、rowkeyで分割することです.rk 025 rk051 rk075 これにより4つのブロックに分けて異なる4つのregionに格納することができ、
create "tb_user" , "cf", SPLITS=>[' rk026 ' , ' rk051 ' , ' rk 076']ブロック化の構文 ブロックの表示 list_region "tb_user"
テーブルの削除
public static void main(String[] args) throws Exception {
//
Admin admin = HbaseUtils.getHbaseAdmin();
// CreateTable(admin);
// admin.close();
//
// , ,
TableName tb_stu = TableName.valueOf("tb_stu2");
if(admin.tableExists(tb_stu)){
admin.disableTable(tb_stu);
if(admin.isTableDisabled(tb_stu)){
//
admin.deleteTable(tb_stu);
}else {
System.out.println(" ");
}
}else {
System.out.println(" ");
}
admin.close();
}
テーブルの簡単な作成、変更、クエリー、削除操作のカプセル化操作
package doit16;
import Utils.HbaseUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
/**
* ,
* 1.
* 2. , ,
* 3. , , , , ,
* 4. ,
*/
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//admin: ,
//table get scan put
public class TableDemo {
public static void main(String[] args) throws Exception {
//
Admin admin = HbaseUtils.getHbaseAdmin();
ChangeTableContain(admin);
}
private static void ChangeTableContain(Admin admin) throws IOException {
// CreateTable(admin);
// admin.close();
// DeleteTable(admin);
/*
// : , , , , , admin
//
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_user"));
//
ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf4".getBytes());
//
ColumnFamilyDescriptor familyDescriptor = familyDescriptorBuilder.build();
//
tableDescriptorBuilder.setColumnFamily(familyDescriptor);
//
TableDescriptor build = tableDescriptorBuilder.build();
//
admin.modifyTable(build);
admin.close();
// */
/**
* Linux01 , , , , , admin
* , ,
*/
//
TableName tb_user = TableName.valueOf("tb_user");
//
ColumnFamilyDescriptorBuilder cfb = ColumnFamilyDescriptorBuilder.newBuilder("cf4".getBytes());//
//
cfb.setMaxVersions(5);
cfb.setTimeToLive(240);
//
ColumnFamilyDescriptor cfd = cfb.build();
admin.modifyColumnFamily(tb_user,cfd);
}
private static void DeleteTable(Admin admin) throws IOException {
//
// , ,
TableName tb_stu = TableName.valueOf("tb_stu2");
if(admin.tableExists(tb_stu)){
admin.disableTable(tb_stu);
if(admin.isTableDisabled(tb_stu)){
//
admin.deleteTable(tb_stu);
}else {
System.out.println(" ");
}
}else {
System.out.println(" ");
}
}
private static void CreateRegionTable(Admin admin) throws IOException {
// region
//1.
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu3"));
//
ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf3"));
//
familyDescriptorBuilder.setMaxVersions(5);
//
ColumnFamilyDescriptor familyDescriptor = familyDescriptorBuilder.build();
//
tableDescriptorBuilder.setColumnFamily(familyDescriptor);
//
TableDescriptor build = tableDescriptorBuilder.build();
// region
// , region
byte[][] keys = new byte[][] {"rk025".getBytes(),"rk051".getBytes()};
admin.createTable(build,keys);
}
private static void CreateTable(Admin admin) throws IOException {
//
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("tb_stu2"));
//
ColumnFamilyDescriptorBuilder familyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("fc2"));
//
familyDescriptorBuilder.setMaxVersions(5);
familyDescriptorBuilder.setTimeToLive(240);
//
ColumnFamilyDescriptor columnFamilyDescriptor = familyDescriptorBuilder.build();
//
tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor);
//
TableDescriptor tableDescriptor = tableDescriptorBuilder.build();
admin.createTable(tableDescriptor);
}
}