HBase的JAVA API操作詳解
hbase 偽 分 布 安 裝參考:http://blog.csdn.net/gamer_gyt/article/details/47126961
hbase shell操作命令參考:http://blog.csdn.net/gamer_gyt/article/details/47131857
數 據 挖 掘 資源連結彙總:http://blog.csdn.net/gamer_gyt/article/details/47747857其中用到的eclipse快捷鍵:
Alt+/ 程式碼助手完成一些程式碼的插入,自動顯示提示資訊
Alt+↓ 當前行和下面一行互動位置(特別實用,可以省去先剪下,再貼上了)
Alt+↑ 當前行和上面一行互動位置(同上)
Alt+← 前一個編輯的頁面
Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
Alt+Shift+M 抽取方法
Alt+Shift+L 抽取本地變數
Ctrl+1 快速修復
一:API介紹
幾個相關類與HBase資料模型之間的對應關係
一、HBaseConfiguration
關係:org.apache.hadoop.hbase.HBaseConfiguration
作用:對HBase進行配置
用法示例:
該方法設定了"hbase.zookeeper.property.clientPort"的埠號為2181。一般情況下,HBaseConfiguration會使用建構函式進行初始化,然後在使用其他方法。
二、HBaseAdmin
關係:org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一個介面來管理HBase資料庫的表資訊。它提供的方法包括:建立表,刪除表,列出表項,使表有效或無效,以及新增或刪除表列族成員等。
用法示例:
三、HTableDescriptor
關係:org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字極其對應表的列族
用法示例:
在上述例子中,通過一個HColumnDescriptor例項,為HTableDescriptor新增了一個列族:family
四、HColumnDescriptor
關係:org.apache.hadoop.hbase.HColumnDescriptor
作用:維護著關於列族的資訊,例如版本號,壓縮設定等。它通常在建立表或者為表新增列族的時候使用。列族被建立後不能直接修改,只能通過刪除然後重新建立的方式。列族被刪除的時候,列族裡面的資料也會同時被刪除。
用法示例:
此例新增了一個content的列族
五、HTable
關係:org.apache.hadoop.hbase.client.HTable
作用:可以用來和HBase表直接通訊。此方法對於更新操作來說是非執行緒安全的。
用法示例:
六、Put
關係:org.apache.hadoop.hbase.client.Put
作用:用來對單個行執行新增操作
用法示例:
七、Get
關係:org.apache.hadoop.hbase.client.Get
作用:用來獲取單個行的相關資訊
用法示例:
八、Result
關係:org.apache.hadoop.hbase.client.Result
作用:儲存Get或者Scan操作後獲取表的單行值。使用此類提供的方法可以直接獲取值或者各種Map結構(key-value對)
九、ResultScanner
關係:Interface
作用:客戶端獲取值的介面
package Hbase;
import java.io.IOException;
import java.io.InterruptedIOException;
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.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.RetriesExhaustedWithDetailsException;
import org.apache.hadoop.hbase.client.Scan;
public class test {
private static final String Table_NAME = "table1"; //表名稱
private static final String FAMILY_NAME = "family1"; //列族名稱
private static final String ROW_KEY = "rowkey1"; //建立行健
//建立,插入,查詢記錄,遍歷表,刪除表
public static void main(String[] args) throws Exception {
Configuration conf= HBaseConfiguration.create();
conf.set("hbase.rootdir","hdfs://localhost:9000/hbase"); //設定hbase再hdfs中的目錄
conf.set("hbase.zookeeper.quorum", "localhost"); //使用zookeeper來進行定位
//建立刪除表使用HBaseAdmin
HBaseAdmin hBaseAdmin = new HBaseAdmin(conf);
createTable(hBaseAdmin); //建立表
//插入記錄,查詢一條記錄,遍歷所有的記錄Table
final HTable hTable = new HTable(conf, Table_NAME);
putRecord(hTable); //插入一條記錄
getRecord(hTable); //查詢一條記錄
scanTable(hTable); //遍歷所有的表的記錄
hTable.close(); //關閉表
//deleteTable(hBaseAdmin); //刪除表
}
private static void scanTable(final HTable hTable) throws IOException {
Scan scan = new Scan();
final ResultScanner scanner = hTable.getScanner(scan);
for (Result result : scanner) {
final byte[] value = result.getValue(FAMILY_NAME.getBytes() , "age".getBytes());
System.out.println(result+"\t" + new String(value));
}
}
private static void getRecord(final HTable hTable) throws IOException {
Get get = new Get(ROW_KEY.getBytes());
final Result result = hTable.get(get );
final byte[] value = result.getValue(FAMILY_NAME.getBytes() , "age".getBytes());
System.out.println(result+"\t" + new String(value));
}
private static void putRecord(HTable hTable) throws InterruptedIOException,
RetriesExhaustedWithDetailsException {
Put put = new Put(ROW_KEY.getBytes()); //宣告物件
put.add(FAMILY_NAME .getBytes(), "age".getBytes()," 12".getBytes()); //新增記錄
hTable.put(put ); //插入
}
private static void deleteTable(HBaseAdmin hBaseAdmin) throws IOException {
hBaseAdmin.disableTable(Table_NAME); //關閉表
hBaseAdmin.deleteTable(Table_NAME); //刪除表
}
private static void createTable(HBaseAdmin hBaseAdmin) throws IOException {
if (!hBaseAdmin.tableExists(Table_NAME)){
HTableDescriptor tableDescriptor = new HTableDescriptor(Table_NAME); //宣告一個表
HColumnDescriptor family = new HColumnDescriptor(FAMILY_NAME); //宣告一個列族
tableDescriptor.addFamily(family ); //新增列族
hBaseAdmin.createTable(tableDescriptor ); //建立表
}
}
}
相關文章
- HBase篇--HBase操作Api和Java操作Hbase相關ApiAPIJava
- 用JAVA的API操作HBASEJavaAPI
- 【甘道夫】HBase基本資料操作詳解
- Java操作hbase總結Java
- HBase shell詳細操作指南
- hbase 2.0.2 java api的簡單使用JavaAPI
- HBase Replication詳解
- Java中的java.lang.Class API 詳解JavaAPI
- HBase-Region詳解
- elasticsearch的java程式碼操作詳解ElasticsearchJava
- java 操作符詳解Java
- Java 8 聚合操作詳解Java
- java Ajax ext之API文件詳解JavaAPI
- Hbase(二)Hbase常用操作
- java內省api的操作JavaAPI
- Java API操作ESJavaAPI
- Java對各種檔案的操作詳解Java
- 詳解JAVA資料庫基本操作Java資料庫
- JavaMail(JAVA郵件服務) API詳解JavaAIAPI
- Hbase shell的基本操作
- HBASE的SHELL命令操作
- HBase (三)之 API的使用API
- Hbase篇--Hbase和MapReduce結合ApiAPI
- HBase 基本操作
- 使用 Java API 操作 elasticsearchJavaAPIElasticsearch
- 用java的api將資料從HDFS上存到HBASE中JavaAPI
- Pytorch的API詳解PyTorchAPI
- Java 8 Stream Api 中的 peek 操作JavaAPI
- HDFS 05 - HDFS 常用的 Java API 操作JavaAPI
- HBase基本的資料操作
- Java11中的新功能和API詳解系列1JavaAPI
- 詳解Java Chassis 3與Spring Cloud的互操作JavaSpringCloud
- Canvas API 詳解CanvasAPI
- Java API 操作Docker淺談JavaAPIDocker
- ElasticSearch 2.3.3 java API操作二ElasticsearchJavaAPI
- java操作redis。jedis使用apiJavaRedisAPI
- Java 封裝 HDFS API 操作Java封裝API
- 利用Java的API實現HBase資料庫的增刪查改JavaAPI資料庫