導航:首頁 > 編程語言 > hbasejava客戶端

hbasejava客戶端

發布時間:2022-04-29 08:32:11

Ⅰ 求《HBase權威指南5中文版》全文免費下載百度網盤資源,謝謝~

《HBase權威指南5中文版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1akGkc0w946hLEfysNa9iVQ

?pwd=6ddr 提取碼: 6ddr
簡介:探討了如何通過使用與HBase高度集成的Hadoop將HBase的可伸縮性變得簡單;把大型數據集分布到相對廉價的商業伺服器集群中;使用本地java客戶端,或者通過提供了REST、Avro和Thrift應用編程介面的網關伺服器來訪問HBase;了解HBase架構的細節,包括存儲格式、預寫日誌、後台進程等;在HBase中集成MapRece框架;了解如何調節集群、設計模式、拷貝表、導入批量數據和刪除節點等。

Ⅱ 如何使用Java API操作Hbase

1. HBaseConfiguration是每一個hbase client都會使用到的對象,它代表的是HBase配置信息。它有兩種構造方式:
public HBaseConfiguration()
public HBaseConfiguration(final Configuration c)
2. HBaseAdmin來創建表。HBaseAdmin負責表的META信息處理。HBaseAdmin提供了createTable這個方法:
public void createTable(HTableDescriptor desc)
3. addFamily方法增加family
public void addFamily(final HColumnDescriptor family)
4. 刪除表
刪除表也是通過HBaseAdmin來操作,刪除表之前首先要disable表。
disableTable和deleteTable分別用來disable和delete表。
5. 查詢數據
單條查詢是通過rowkey在table中查詢某一行的數據。HTable提供了get方法來完成單條查詢。
批量查詢是通過制定一段rowkey的范圍來查詢。HTable提供了個getScanner方法來完成批量查詢。
public Result get(final Get get)
public ResultScanner getScanner(final Scan scan)
6. 插入數據 HTable通過put方法來插入數據。
public void put(final Put put) throws IOException
public void put(final List puts) throws IOException
7. 切分表
HBaseAdmin提供split方法來將table 進行split.
public void split(final String tableNameOrRegionName)

Ⅲ 如何在java中實現hbase介面

使用maven+idea進行管理

maven

<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>

<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-shaded-client</artifactId> <version>1.2.3</version> </dependency>

Ⅳ hbase連接java時,zookeeper總是連接不上,但是確實已經啟動,每次連接,都報錯

HBase的安裝包裡面有自帶zookeeper的。很多系統部署也是直接啟動上面的zookeeper。 本來也是沒有問題的,想想吧,系統里也只有hbase在用zookeeper。先啟動zookeeper,再將hbase起來就好了 ? 但是今天遇到了一個很蛋疼的問題。和同事爭論了很久。 ? 因為我們是好多hbase集群共用一個zookeeper的,其中一個集群需要從hbase 0.90.二 升級到hbase 0.9二上,自然,包也要更新。但是其中一台regionserver上面同時也有跑zookeeper,而zookeeper還是用hbase 0.90.二 自帶的zookeeper在跑。 ? 現在好了,升級一個regionserver,連著zookeeper也要受到牽連,看來必須要重啟,不然,jar包替換掉,可能會影響到zk正在跑的經常。但是重啟zk畢竟對正在連接這個zk的client端會有短暫的影響

Ⅳ java 怎麼和hbase連接並發

曾幾何時,我們創建可以顯示/隱藏一些內容的小組件時,我們不得不使用Javascript.有時候你可能不得不為這個小功能,下載一個完整的
JS
庫才能達到這個功能效果.為下面的時刻歡呼吧!HTML5提供了創建這種拖拽特點的方法,我們僅僅需要簡單的幾行html代碼就能獲得這種效果(從目前而
言,這種效果還依賴於使用的瀏覽器,當然,在不久的將來,這可能不是問題).下面讓我們一起來看看 <detail>元素.

下面就是規范中的描述

The details element represents a disclosure widget from which the user can obtain additional information or controls.
— WHATWG HTML5 specification

理論上我們可以用它創建那種折疊的小組件,用戶可以有打開和關閉的交互.在<details>我們可以放入我們任何想放入的內容.

瀏覽器的支持情況

在我們開始之前,實際一點,讓我們看看目前瀏覽器的支持情況,目前只有chrome支持 <details > 元素.Opera很快就會支持Opera will support it soon,讓我們來用chrome演示這種效果吧.

<details 的使用方法

這里有兩個相關的元素:<details>和可選的
讓我們來看下面的代碼:

<details>
<summary>Show/Hide me</summary>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
</details>

你可以通過下面的鏈接察看效果see this in action over at jsbin.這是一個簡單的例子但是可以將效果完美展現的代碼,沒有任何Javascript.

OPen 屬性

在上面的例子中,在頁面載入的時候內容是隱藏的。我們可以將<detail>默認的視覺屬性通過布爾值作修改,讓其當我們載入頁面的時候是展開的:
<details open>
<summary>Show/Hide me</summary>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
</details>

注意,這里並沒有 closed 屬性,因為只要你移除 open 屬性,執行的就是 closed 屬性效果。

<summary>元素
我們已經簡要的看了

的作用。因為它是短語內
容,我們可以使用內聯 (inline)標簽
<span;>。我們為什麼會有這種想法呢?也許這樣子能更方便的通過而外樣式控制顯示效果或者像 spec
建議的那樣:為一個表單元素增加一個 <label>標簽。如果他能生效的話,至少能讓我很順手:

<details>
<summary><label for="name">Name:</label></summary>
<input type="text" id="name" name="name" />
</details>

常理看,我們點擊 summary 的任何位置都應該展開
<detail>元素的內容。但是在這個例子中,我們點擊<summary>並沒有展開內容,因為你點擊的
是<label>他會將焦點放到 <input>標簽-即使那部分內容被隱藏在<details>標簽。
很明顯,在這點需要更好的聲明,你認為這個地方應該發生什麼事情呢?可能某個瀏覽器生產商能看一下這個效果。

<details>元素多層嵌套

你可以在<details>中嵌套<details>,可以完美的案例查看這個效果:<details>
<summary>Question 1</summary>
<p><strong>Pellentesque
habitant morbi tristique</strong> senectus et netus et malesuada
fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae,
ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam
egestas semper. <em>Aenean ultricies mi vitae est.</em>
Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper
pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo
vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget
tincint condimentum, eros ipsum rutrum orci, sagittis tempus lacus
enim ac i. <a href="#">Donec non enim</a> in turpis
pulvinar facilisis. Ut felis.</p>
<details>
<summary>Related documents</summary>
<ul>
<li><a href="#">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</a></li>
<li><a href="#">Aliquam tincint mauris eu risus.</a></li>
<li><a href="#">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</a></li>
<li><a href="#">Aliquam tincint mauris eu risus.</a></li>
</ul>
</details>
</details>

Ⅵ 如何使用Java API操作Hbase

使用Java API操作Hbase的方法:
1.Configuration
在使用Java API時,Client端需要知道HBase的配置環境,如存儲地址,zookeeper等信息。這些信息通過Configuration對象來封裝,可通過如下代碼構建該對象

Configuration config=HBaseConfiguration.create();

在調用HBaseConfiguration.create()方法時,HBase首先會在classpath下查找hbase-site.xml文件,將裡面的信息解析出來封裝到Configuration對象中,如果hbase-site.xml文件不存在,則使用默認的hbase-core.xml文件。

除了將hbase-site.xml放到classpath下,開發人員還可通過config.set(name, value)方法來手工構建Configuration對象。
Configuration.set(String name, String value)

2.HBaseAdmin
HBaseAdmin用於創建資料庫表格,並管理表格的元數據信息,通過如下方法構建

HBaseAdmin admin=new HBaseAdmin(config);

常用方法:

addColumn(tableName,column):為表格添加欄位

deleteColumn(tableName,column):刪除指定欄位

balanceSwitch(boolean):是否啟用負載均衡

createTable(HTableDescriptor desc):創建表格

deleteTable(tableName):刪除表格

tableExists(tableName):判斷表格是否存在
示例:創建test表格,並為其指定columnFamily為cf

HBaseAdmin admin=new HBaseAdmin(config);
If(!admin.tableExists(「test」)){
HTableDescriptor tableDesc=new HTableDescriptor(「test」);
HColumnDescriptor cf=new HColumnDescriptor(「cf」);
tableDesc.addFamily(cf);
admin.createTable(tableDesc);
}
3.HTable
在HBase中,HTable封裝表格對象,對表格的增刪改查操作主要通過它來完成,構造方法如下:

HTable table=new HTable(config,tableName);

在構建多個HTable對象時,HBase推薦所有的HTable使用同一個Configuration。這樣,HTable之間便可共享HConnection對象、zookeeper信息以及Region地址的緩存信息。

示例1:Get操作
Get get=new Get(rowKey);
Result res=table.get(get);
示例2:Put操作

Put put=new Put(rowKey);
put.add(columnFamily,column,value);
table.put(put);
註:在HBase中,實體的新增和更新都是通過Put操作來實現。
示例3:Delete操作
Delete delete=new Delete();
table.delete(delete);
示例4:Scan操作

Scan scan=new Scan( );
scan.addColumn(columnFamily,column);//指定查詢要返回的column
SingleColumnValueFilter filter=new SingleColumnValueFilter(
columnFamily,column,//指定要過濾的column
CompareOp.EQUAL,value//指定過濾條件
);
//更多的過濾器信息請查看org.apache.hadoop.hbase.filter包
scan.setFilter(filter);//為查詢指定過濾器
ResultScanner scanner=table.getScanner(scan);//執行掃描查找
Iterator<Result> res=scanner.iterator( );//返回查詢遍歷器

HBase提供了java api來對HBase進行一系列的管理涉及到對表的管理、數據的操作等。常用的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。

Ⅶ hbase單機模式下,使用java API遠程連接hbase的問題。

首先你應該看Master進程是否已經成功啟動,檢查下master的60010監控界面。這日誌報的是連接拒絕 ,或者關閉防火牆

極有可能是你PC機網路無法連接到虛擬機里邊,你可以從本機telnet下虛擬機上master的埠,看下能連上不

Ⅷ 如何使用java api操作hbase

一般情況下,我們使用Linux的shell命令,就可以非常輕松的操作Hbase,例如一些建表,建列簇,插值,顯示所有表,統計數量等等,但有時為了提高靈活性,我們也需要使用編程語言來操作Hbase,當然Hbase通過Thrift介面提供了對大多數主流編程語言的支持,例如C++,PHP,Python,Ruby等等,那麼本篇,散仙給出的例子是基於Java原生的API操作Hbase,相比其他的一些編程語言,使用Java操作Hbase,會更加高效一些,因為Hbase本身就是使用Java語言編寫的。轉載
下面,散仙給出源碼,以供參考:

package com.hbase;

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.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.util.Bytes;

/**
* @author 三劫散仙
*
* **/
public class Test {

static Configuration conf=null;
static{

conf=HBaseConfiguration.create();//hbase的配置信息
conf.set("hbase.zookeeper.quorum", "10.2.143.5"); //zookeeper的地址

}

public static void main(String[] args)throws Exception {

Test t=new Test();
//t.createTable("temp", new String[]{"name","age"});
//t.insertRow("temp", "2", "age", "myage", "100");
// t.getOneDataByRowKey("temp", "2");
t.showAll("temp");

}

/***
* 創建一張表
* 並指定列簇
* */
public void createTable(String tableName,String cols[])throws Exception{
HBaseAdmin admin=new HBaseAdmin(conf);//客戶端管理工具類
if(admin.tableExists(tableName)){
System.out.println("此表已經存在.......");
}else{
HTableDescriptor table=new HTableDescriptor(tableName);
for(String c:cols){
HColumnDescriptor col=new HColumnDescriptor(c);//列簇名
table.addFamily(col);//添加到此表中
}

admin.createTable(table);//創建一個表
admin.close();
System.out.println("創建表成功!");
}
}

/**
* 添加數據,
* 建議使用批量添加
* @param tableName 表名
* @param row 行號
* @param columnFamily 列簇
* @param column 列
* @param value 具體的值
*
* **/
public void insertRow(String tableName, String row,
String columnFamily, String column, String value) throws Exception {
HTable table = new HTable(conf, tableName);
Put put = new Put(Bytes.toBytes(row));
// 參數出分別:列族、列、值
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
Bytes.toBytes(value));

table.put(put);
table.close();//關閉
System.out.println("插入一條數據成功!");
}

/**
* 刪除一條數據
* @param tableName 表名
* @param row rowkey
* **/
public void deleteByRow(String tableName,String rowkey)throws Exception{
HTable h=new HTable(conf, tableName);
Delete d=new Delete(Bytes.toBytes(rowkey));
h.delete(d);//刪除一條數據
h.close();
}

/**
* 刪除多條數據
* @param tableName 表名
* @param row rowkey
* **/
public void deleteByRow(String tableName,String rowkey[])throws Exception{
HTable h=new HTable(conf, tableName);

List<Delete> list=new ArrayList<Delete>();
for(String k:rowkey){
Delete d=new Delete(Bytes.toBytes(k));
list.add(d);
}
h.delete(list);//刪除
h.close();//釋放資源
}

/**
* 得到一條數據
*
* @param tableName 表名
* @param rowkey 行號
* ***/
public void getOneDataByRowKey(String tableName,String rowkey)throws Exception{
HTable h=new HTable(conf, tableName);

Get g=new Get(Bytes.toBytes(rowkey));
Result r=h.get(g);
for(KeyValue k:r.raw()){

System.out.println("行號: "+Bytes.toStringBinary(k.getRow()));
System.out.println("時間戳: "+k.getTimestamp());
System.out.println("列簇: "+Bytes.toStringBinary(k.getFamily()));
System.out.println("列: "+Bytes.toStringBinary(k.getQualifier()));
//if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
// System.out.println("值: "+Bytes.toInt(k.getValue()));
//}else{
String ss= Bytes.toString(k.getValue());
System.out.println("值: "+ss);
//}

}
h.close();

}

/**
* 掃描所有數據或特定數據
* @param tableName
* **/
public void showAll(String tableName)throws Exception{

HTable h=new HTable(conf, tableName);

Scan scan=new Scan();
//掃描特定區間
//Scan scan=new Scan(Bytes.toBytes("開始行號"),Bytes.toBytes("結束行號"));
ResultScanner scanner=h.getScanner(scan);
for(Result r:scanner){
System.out.println("==================================");
for(KeyValue k:r.raw()){

System.out.println("行號: "+Bytes.toStringBinary(k.getRow()));
System.out.println("時間戳: "+k.getTimestamp());
System.out.println("列簇: "+Bytes.toStringBinary(k.getFamily()));
System.out.println("列: "+Bytes.toStringBinary(k.getQualifier()));
//if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
// System.out.println("值: "+Bytes.toInt(k.getValue()));
//}else{
String ss= Bytes.toString(k.getValue());
System.out.println("值: "+ss);
//}

}
}
h.close();

}

}

顯示所有數據的列印輸出如下:

==================================
行號: 1
時間戳: 1385597699287
列簇: name
列: myname
值: 秦東亮
==================================
行號: 2
時間戳: 1385598393306
列簇: age
列: myage
值: 100
行號: 2
時間戳: 1385597723900
列簇: name
列: myname
值: 三劫散仙

由此,可以看出Hbase的對外的API提供介面,是非常簡單易用的。

Ⅸ 用java api對hbase的操作有幾種形式

通過對Hbase API的使用,下面例子舉例了常見對HBase的操作,如下所示:

[java] view plain
package net.csdn.jtlyuan;

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.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Re

Ⅹ hbase java端調用

這是缺少必要的類org/apache/hadoop/thirdparty/guava/common/primitives/UnsignedBytes
你可以到jarsearch上搜索含有這個類的jar包,然後把它放到classpath下就行了

閱讀全文

與hbasejava客戶端相關的資料

熱點內容
數學奇跡神奇運演算法 瀏覽:359
大廠的程序員的水平如何 瀏覽:700
遺傳演算法入門經典書籍 瀏覽:878
源碼炮台腳本 瀏覽:620
在位編輯命令 瀏覽:347
曲式分析基礎教程pdf 瀏覽:14
php生成靜態html頁面 瀏覽:964
怎麼分割pdf 瀏覽:812
壓縮垃圾報警器 瀏覽:628
小公司一般都用什麼伺服器 瀏覽:967
java獲取時間gmt時間 瀏覽:820
為什麼csgo一直連接不到伺服器 瀏覽:504
安卓登ins需要什麼 瀏覽:836
機器人演算法的難點 瀏覽:226
全自動化編程 瀏覽:726
程序員高薪限制 瀏覽:693
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:302
電腦怎麼備案網上伺服器 瀏覽:515
旅行商問題Python寫法 瀏覽:952