包含hbasejava的詞條

本文目錄一覽:

如何在java中實現hbase接口

使用maven+idea進行管理

maven

dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.17/version /dependency

dependency groupIdorg.apache.hbase/groupId artifactIdhbase-shaded-client/artifactId version1.2.3/version /dependency

java怎樣給hbase插入數據

hbase 是動態列的,直接加就可以了,不用事先定義的啊

例如:(代碼沒有調試過,具體可看hbase的例子)

Table table = connection.getTable(TableName.valueOf(表名));

Put put = new Put(Bytes.toBytes(主鍵字符串));

put.addColumn(FieldFamily, Bytes.toBytes(字段名1), Bytes.toBytes(插入的值1));

put.addColumn(FieldFamily, Bytes.toBytes(字段名2), Bytes.toBytes(插入的值2));

………

table.put(put);

北大青鳥java培訓:Hbase知識點總結?

hbase概念:  非結構化的分佈式的面向列存儲非關係型的開源的數據庫,根據谷歌的三大論文之一的bigtable  高寬厚表  作用:  為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。

  能幹什麼:  存儲大量結果集數據,低延遲的隨機查詢。

  sql:  結構化查詢語言  nosql:  非關係型數據庫,列存儲和文檔存儲(查詢低延遲),hbase是nosql的一個種類,其特點是列式存儲。

  非關係型數據庫–列存儲(hbase)  非關係型數據庫–文檔存儲(MongoDB)  非關係型數據庫–內存式存儲(redis)  非關係型數據庫–圖形模型(graph)  hive和hbase區別?  Hive的定位是數據倉庫,雖然也有增刪改查,但其刪改查對應的是整張表而不是單行數據,查詢的延遲較高。

其本質是更加方便的使用mr的威力來進行離線分析的一個數據分析工具。

  HBase的定位是hadoop的數據庫,電腦培訓發現是一個典型的Nosql,所以HBase是用來在大量數據中進行低延遲的隨機查詢的。

  hbase運行方式:  standalonedistrubited  單節點和偽分佈式?  單節點:單獨的進程運行在同一台機器上  hbase應用場景:  存儲海量數據低延遲查詢數據  hbase表由多行組成  hbase行一行在hbase中由行健和一個或多個列的值組成,按行健字母順序排序的存儲。

hbase java端調用

這是缺少必要的類org/apache/hadoop/thirdparty/guava/common/primitives/UnsignedBytes

你可以到jarsearch上搜索含有這個類的jar包,然後把它放到classpath下就行了

hbase java

hbase java是什麼,讓我們一起了解一下?

HBase是一個分佈式的、面向列的開源數據庫,具有高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。

如何使用JAVA語言操作Hbase、整合Hbase?

可分為五步驟:

步驟1:新創建一個Java Project 。

步驟2:導入JAR包,在工程根目錄下新建一個「lib」文件夾,將官方文檔中的lib目錄下的jar全部導入。

步驟3:修改開發機的hosts文件,在文件莫為增加一行虛擬機IP的映射信息。

步驟4:修改虛擬機的配置文件,修改虛擬機的設備名稱,名稱需要與之前兩個配置文件的映射名稱一致。

步驟5:實現查詢、新建、刪除等。

案例代碼展示如下:

package hbase; import java.io.IOException; import java.util.ArrayList; 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.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; 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.client.Table; import org.apache.hadoop.hbase.exceptions.DeserializationException; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.util.Bytes; import org.junit.Before; import org.junit.Test; public class HBaseDemo { // 與HBase數據庫的連接對象 Connection connection; // 數據庫元數據操作對象 Admin admin; @Before public void setUp() throws Exception { // 取得一個數據庫連接的配置參數對象 Configuration conf = HBaseConfiguration.create(); // 設置連接參數:HBase數據庫所在的主機IP conf.set(“hbase.zookeeper.quorum”, “192.168.137.13”); // 設置連接參數:HBase數據庫使用的端口 conf.set(“hbase.zookeeper.property.clientPort”, “2181”); // 取得一個數據庫連接對象 connection = ConnectionFactory.createConnection(conf); // 取得一個數據庫元數據操作對象 admin = connection.getAdmin(); } /**     * 創建表     */ public void createTable() throws IOException{ System.out.println(“—————創建表 START—————–“); // 數據表表名 String tableNameString = “t_book”; // 新建一個數據表表名對象 TableName tableName = TableName.valueOf(tableNameString); // 如果需要新建的表已經存在 if(admin.tableExists(tableName)){ System.out.println(“表已經存在!”); } // 如果需要新建的表不存在 else{ // 數據表描述對象 HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName); // 列族描述對象 HColumnDescriptor family= new HColumnDescriptor(“base”);; // 在數據表中新建一個列族 hTableDescriptor.addFamily(family); // 新建數據表 admin.createTable(hTableDescriptor); } System.out.println(“—————創建表 END—————–“); } /**     * 查詢整表數據     */ @Test public void queryTable() throws IOException{ System.out.println(“—————查詢整表數據 START—————–“); // 取得數據表對象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 取得表中所有數據 ResultScanner scanner = table.getScanner(new Scan()); // 循環輸出表中的數據 for (Result result : scanner) { byte[] row = result.getRow(); System.out.println(“row key is:” + new String(row)); List  listCells = result.listCells(); for (Cell cell : listCells) { byte[] familyArray = cell.getFamilyArray(); byte[] qualifierArray = cell.getQualifierArray(); byte[] valueArray = cell.getValueArray(); System.out.println(“row value is:” + new String(familyArray) + new String(qualifierArray) + new String(valueArray)); } } System.out.println(“—————查詢整表數據 END—————–“); } /**     * 按行鍵查詢表數據     */ @Test public void queryTableByRowKey() throws IOException{ System.out.println(“—————按行鍵查詢表數據 START—————–“); // 取得數據表對象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 新建一個查詢對象作為查詢條件 Get get = new Get(“row8”.getBytes()); // 按行鍵查詢數據 Result result = table.get(get); byte[] row = result.getRow(); System.out.println(“row key is:” + new String(row)); List  listCells = result.listCells(); for (Cell cell : listCells) { byte[] familyArray = cell.getFamilyArray(); byte[] qualifierArray = cell.getQualifierArray(); byte[] valueArray = cell.getValueArray(); System.out.println(“row value is:” + new String(familyArray) + new String(qualifierArray) + new String(valueArray)); } System.out.println(“—————按行鍵查詢表數據 END—————–“); } /**     * 按條件查詢表數據     */ @Test public void queryTableByCondition() throws IOException{ System.out.println(“—————按條件查詢表數據 START—————–“); // 取得數據表對象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 創建一個查詢過濾器 Filter filter = new SingleColumnValueFilter(Bytes.toBytes(“base”), Bytes.toBytes(“name”), CompareOp.EQUAL, Bytes.toBytes(“bookName6”)); // 創建一個數據表掃描器 Scan scan = new Scan(); // 將查詢過濾器加入到數據表掃描器對象 scan.setFilter(filter); // 執行查詢操作,並取得查詢結果 ResultScanner scanner = table.getScanner(scan); // 循環輸出查詢結果 for (Result result : scanner) { byte[] row = result.getRow(); System.out.println(“row key is:” + new String(row)); List  listCells = result.listCells(); for (Cell cell : listCells) { byte[] familyArray = cell.getFamilyArray(); byte[] qualifierArray = cell.getQualifierArray(); byte[] valueArray = cell.getValueArray(); System.out.println(“row value is:” + new String(familyArray) + new String(qualifierArray) + new String(valueArray)); } } System.out.println(“—————按條件查詢表數據 END—————–“); } /**     * 清空表     */ @Test public void truncateTable() throws IOException{ System.out.println(“—————清空表 START—————–“); // 取得目標數據表的表名對象 TableName tableName = TableName.valueOf(“t_book”); // 設置表狀態為無效 admin.disableTable(tableName); // 清空指定表的數據 admin.truncateTable(tableName, true); System.out.println(“—————清空表 End—————–“); } /**     * 刪除表     */ @Test public void deleteTable() throws IOException{ System.out.println(“—————刪除表 START—————–“); // 設置表狀態為無效 admin.disableTable(TableName.valueOf(“t_book”)); // 刪除指定的數據表 admin.deleteTable(TableName.valueOf(“t_book”)); System.out.println(“—————刪除表 End—————–“); } /**     * 刪除行     */ @Test public void deleteByRowKey() throws IOException{ System.out.println(“—————刪除行 START—————–“); // 取得待操作的數據表對象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 創建刪除條件對象 Delete delete = new Delete(Bytes.toBytes(“row2”)); // 執行刪除操作 table.delete(delete); System.out.println(“—————刪除行 End—————–“); } /**     * 刪除行(按條件)     */ @Test public void deleteByCondition() throws IOException, DeserializationException{ System.out.println(“—————刪除行(按條件) START—————–“); // 步驟1:調用queryTableByCondition()方法取得需要刪除的數據列表 // 步驟2:循環步驟1的查詢結果,對每個結果調用deleteByRowKey()方法 System.out.println(“—————刪除行(按條件) End—————–“); } /**     * 新建列族     */ @Test public void addColumnFamily() throws IOException{ System.out.println(“—————新建列族 START—————–“); // 取得目標數據表的表名對象 TableName tableName = TableName.valueOf(“t_book”); // 創建列族對象 HColumnDescriptor columnDescriptor = new HColumnDescriptor(“more”); // 將新創建的列族添加到指定的數據表 admin.addColumn(tableName, columnDescriptor); System.out.println(“—————新建列族 END—————–“); } /**     * 刪除列族     */ @Test public void deleteColumnFamily() throws IOException{ System.out.println(“—————刪除列族 START—————–“); // 取得目標數據表的表名對象 TableName tableName = TableName.valueOf(“t_book”); // 刪除指定數據表中的指定列族 admin.deleteColumn(tableName, “more”.getBytes()); System.out.println(“—————刪除列族 END—————–“); } /**     * 插入數據     */ @Test public void insert() throws IOException{ System.out.println(“—————插入數據 START—————–“); // 取得一個數據表對象 Table table = connection.getTable(TableName.valueOf(“t_book”)); // 需要插入數據庫的數據集合 List  putList = new ArrayList (); Put put; // 生成數據集合 for(int i = 0; i 

如何使用Java API操作Hbase

HBase提供了對HBase進行一系列的管理涉及到對錶的管理、數據的操作java api。

常用的API操作有:

1、 對錶的創建、刪除、顯示以及修改等,可以用HBaseAdmin,一旦創建了表,那麼可以通過HTable的實例來訪問表,每次可以往表裡增加數據。

2、 插入數據

創建一個Put對象,在這個Put對象里可以指定要給哪個列增加數據,以及當前的時間戳等值,然後通過調用HTable.put(Put)來提交操作,子猴在這裡提請注意的是:在創建Put對象的時候,你必須指定一個行(Row)值,在構造Put對象的時候作為參數傳入。

3、 獲取數據

要獲取數據,使用Get對象,Get對象同Put對象一樣有好幾個構造函數,通常在構造的時候傳入行值,表示取第幾行的數據,通過HTable.get(Get)來調用。

4、 瀏覽每一行

通過Scan可以對表中的行進行瀏覽,得到每一行的信息,比如列名,時間戳等,Scan相當於一個游標,通過next()來瀏覽下一個,通過調用HTable.getScanner(Scan)來返回一個ResultScanner對象。HTable.get(Get)和HTable.getScanner(Scan)都是返回一個Result。Result是一個

KeyValue的鏈表。

5、 刪除

使用Delete來刪除記錄,通過調用HTable.delete(Delete)來執行刪除操作。(註:刪除這裡有些特別,也就是刪除並不是馬上將數據從表中刪除。)

6、 鎖

新增、獲取、刪除在操作過程中會對所操作的行加一個鎖,而瀏覽卻不會。

7、 簇的訪問

客戶端代碼通過ZooKeeper來訪問找到簇,也就是說ZooKeeper quorum將被使用,那麼相關的類(包)應該在客戶端的類(classes)目錄下,即客戶端一定要找到文件hbase-site.xml。

下面是一個例子程序:

import java.io.IOException;

import java.util.ArrayList;

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.MasterNotRunningException;

import org.apache.hadoop.hbase.ZooKeeperConnectionException;

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.Result;

import org.apache.hadoop.hbase.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

import org.apache.hadoop.hbase.client.Put;

import org.apache.hadoop.hbase.util.Bytes;

public class HBaseTest {

private static Configuration conf = null;

/**

* 初始化配置

*/

static {

Configuration HBASE_CONFIG = new Configuration();

//與hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同

HBASE_CONFIG.set(“hbase.zookeeper.quorum”, “10.1.1.1”);

//與hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同

HBASE_CONFIG.set(“hbase.zookeeper.property.clientPort”, “2181”);

conf = HBaseConfiguration.create(HBASE_CONFIG);

}

/**

* 創建一張表

*/

public static void creatTable(String tableName, String[] familys) throws Exception {

HBaseAdmin admin = new HBaseAdmin(conf);

if (admin.tableExists(tableName)) {

System.out.println(“table already exists!”);

} else {

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

for(int i=0; ifamilys.length; i++){

tableDesc.addFamily(new HColumnDescriptor(familys[i]));

}

admin.createTable(tableDesc);

System.out.println(“create table ” + tableName + ” ok.”);

}

}

/**

* 刪除表

*/

public static void deleteTable(String tableName) throws Exception {

try {

HBaseAdmin admin = new HBaseAdmin(conf);

admin.disableTable(tableName);

admin.deleteTable(tableName);

System.out.println(“delete table ” + tableName + ” ok.”);

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

}

}

/**

* 插入一行記錄

*/

public static void addRecord (String tableName, String rowKey, String family, String qualifier, String value)

throws Exception{

try {

HTable table = new HTable(conf, tableName);

Put put = new Put(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));

table.put(put);

System.out.println(“insert recored ” + rowKey + ” to table ” + tableName +” ok.”);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 刪除一行記錄

*/

public static void delRecord (String tableName, String rowKey) throws IOException{

HTable table = new HTable(conf, tableName);

List list = new ArrayList();

Delete del = new Delete(rowKey.getBytes());

list.add(del);

table.delete(list);

System.out.println(“del recored ” + rowKey + ” ok.”);

}

/**

* 查找一行記錄

*/

public static void getOneRecord (String tableName, String rowKey) throws IOException{

HTable table = new HTable(conf, tableName);

Get get = new Get(rowKey.getBytes());

Result rs = table.get(get);

for(KeyValue kv : rs.raw()){

System.out.print(new String(kv.getRow()) + ” ” );

System.out.print(new String(kv.getFamily()) + “:” );

System.out.print(new String(kv.getQualifier()) + ” ” );

System.out.print(kv.getTimestamp() + ” ” );

System.out.println(new String(kv.getValue()));

}

}

/**

* 顯示所有數據

*/

public static void getAllRecord (String tableName) {

try{

HTable table = new HTable(conf, tableName);

Scan s = new Scan();

ResultScanner ss = table.getScanner(s);

for(Result r:ss){

for(KeyValue kv : r.raw()){

System.out.print(new String(kv.getRow()) + ” “);

System.out.print(new String(kv.getFamily()) + “:”);

System.out.print(new String(kv.getQualifier()) + ” “);

System.out.print(kv.getTimestamp() + ” “);

System.out.println(new String(kv.getValue()));

}

}

} catch (IOException e){

e.printStackTrace();

}

}

public static void main (String [] agrs) {

try {

String tablename = “scores”;

String[] familys = {“grade”, “course”};

HBaseTest.creatTable(tablename, familys);

//add record zkb

HBaseTest.addRecord(tablename,”zkb”,”grade”,””,”5″);

HBaseTest.addRecord(tablename,”zkb”,”course”,””,”90″);

HBaseTest.addRecord(tablename,”zkb”,”course”,”math”,”97″);

HBaseTest.addRecord(tablename,”zkb”,”course”,”art”,”87″);

//add record baoniu

HBaseTest.addRecord(tablename,”baoniu”,”grade”,””,”4″);

HBaseTest.addRecord(tablename,”baoniu”,”course”,”math”,”89″);

System.out.println(“===========get one record========”);

HBaseTest.getOneRecord(tablename, “zkb”);

System.out.println(“===========show all record========”);

HBaseTest.getAllRecord(tablename);

System.out.println(“===========del one record========”);

HBaseTest.delRecord(tablename, “baoniu”);

HBaseTest.getAllRecord(tablename);

System.out.println(“===========show all record========”);

HBaseTest.getAllRecord(tablename);

} catch (Exception e) {

e.printStackTrace();

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/246973.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:18
下一篇 2024-12-12 13:18

相關推薦

發表回復

登錄後才能評論