天天看點

hbase rest 通路_如何使用 REST API 通路 HBase 資料

如何使用 REST API 通路 HBase 資料

12/21/2017

本文内容

HBase 是一個非關系型分布式資料庫,可以通過 HBase Shell,Java API 來存取資料,也可以通過 REST API 來通路。

本文将使用 Postman 示範如何使用 REST API 建立一個使用了 PrefixFilter 的 scanner,并用其通路 Azure 上的 HBase 資料。

首先,建立一個 HDInsight 叢集。在本示例中,HDInsight 的叢集名字為:hbase.

在開始進行測試之前,建議您先建立一個自己的資料表 Contacts,并添加部分資料:

create 'Contacts', 'Personal', 'Office'

put 'Contacts', 'alex', 'Personal:Name', 'John Dole'

put 'Contacts', 'Bobb', 'Personal:Phone', '1-425-000-0001'

put 'Contacts', 'Jeremy', 'Office:Phone', '1-425-000-0002'

put 'Contacts', 'Stanley', 'Office:Address', '1111 San Gabriel Dr.'

接下來需要确認通路 HBase REST API 的路徑。

通路路徑的格式如下,其中 clustername 需要替換為使用者自己的叢集名。https://{clustername}.azurehdinsight.cn/{clustername}restContacts/scanner

在本示例中,叢集的通路路徑為:

https://hbase.azurehdinsight.cn/hbaserestContacts/scanner

以下介紹如何通過 Postman 使用 REST API 通路 Azure HBase:

首先建立 scanner:

Request 類型為 PUT, Authorization 方法使用 Basic Auth,賬号密碼為 Ambari 的管理者使用者、密碼。

hbase rest 通路_如何使用 REST API 通路 HBase 資料

Headers 部分,Authorization 參數為自動生成 (Username:Password=>Base64)。

hbase rest 通路_如何使用 REST API 通路 HBase 資料

Body 部分,type 應為 PrefixFilter(根據字首過濾),需要注意的是,value 中的值應為 Base64 編碼值,此處為 Stan 的 Base64 編碼值(U3Rhbg==)。

hbase rest 通路_如何使用 REST API 通路 HBase 資料

發送請求,記錄下傳回結果的 Headers 中藍圈部分的 scanid 以備後文使用:

hbase rest 通路_如何使用 REST API 通路 HBase 資料

此時我們已經向 HBase 送出了一個 scan 請求。

下文介紹如何擷取查詢結果:

擷取資料,Request 類型為 GET,并且将上一步中擷取的 scanid 添加到 URL 結尾,然後點選 send。

hbase rest 通路_如何使用 REST API 通路 HBase 資料

擷取結果,可以看到結果為 XML。

hbase rest 通路_如何使用 REST API 通路 HBase 資料

将以上結果經過 Base64 轉碼可得:Row key="U3RhbmxleQ=="轉碼後的 Row Key 為 Stanley,Cell column="T2ZmaWNlOkFkZHJlc3M="(Office:Address) 的值 MTExMSBTYW4gR2FicmllbCBEcg== 為 1111 San Gabriel Dr.。

備注

PrefixFilter 是基于 Row key 的過濾條件。

至此資料查詢完成。