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 2.0.2 java api的簡單使用JavaAPI
- HBase Replication詳解
- Java中的java.lang.Class API 詳解JavaAPI
- elasticsearch的java程式碼操作詳解ElasticsearchJava
- HBase-Region詳解
- Hbase(二)Hbase常用操作
- java內省api的操作JavaAPI
- Java API操作ESJavaAPI
- Hbase shell的基本操作
- Pytorch的API詳解PyTorchAPI
- HBase (三)之 API的使用API
- 詳解Java Chassis 3與Spring Cloud的互操作JavaSpringCloud
- HBase 基本操作
- 使用 Java API 操作 elasticsearchJavaAPIElasticsearch
- Java 8 Stream Api 中的 peek 操作JavaAPI
- HDFS 05 - HDFS 常用的 Java API 操作JavaAPI
- Java11中的新功能和API詳解系列1JavaAPI
- 利用Java的API實現HBase資料庫的增刪查改JavaAPI資料庫
- Java API 操作Docker淺談JavaAPIDocker
- HBase學習的第四天--HBase的進階與APIAPI
- Canvas API 詳解CanvasAPI
- HBase Filter 過濾器之 ValueFilter 詳解Filter過濾器
- Java map 詳解 - 用法、遍歷、排序、常用API等Java排序API
- hbase - [04] java訪問hbaseJava
- JS中Object的API詳解JSObjectAPI
- 詳解 RestTemplate 操作REST
- hbase與phoenix整合(使用phoenix操作hbase資料)
- 大資料技術Hbase和Hive詳解大資料Hive
- 使用Java API操作zookeeper的acl許可權JavaAPI
- RDD的詳解、建立及其操作
- Hbase單機部署 java連線HbaseJava
- java中cookie操作詳細JavaCookie
- Java基礎篇(04):日期與時間API用法詳解JavaAPI
- Hadoop(四)C#操作HbaseHadoopC#
- python操作Redis詳解PythonRedis
- 操作符詳解
- PHP操作xml詳解PHPXML
- vue3.0API詳解VueAPI
- 《HBase 不睡覺》第三章 – HBase 基本操作