如何使用 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 的管理者使用者、密碼。
Headers 部分,Authorization 參數為自動生成 (Username:Password=>Base64)。
Body 部分,type 應為 PrefixFilter(根據字首過濾),需要注意的是,value 中的值應為 Base64 編碼值,此處為 Stan 的 Base64 編碼值(U3Rhbg==)。
發送請求,記錄下傳回結果的 Headers 中藍圈部分的 scanid 以備後文使用:
此時我們已經向 HBase 送出了一個 scan 請求。
下文介紹如何擷取查詢結果:
擷取資料,Request 類型為 GET,并且将上一步中擷取的 scanid 添加到 URL 結尾,然後點選 send。
擷取結果,可以看到結果為 XML。
将以上結果經過 Base64 轉碼可得:Row key="U3RhbmxleQ=="轉碼後的 Row Key 為 Stanley,Cell column="T2ZmaWNlOkFkZHJlc3M="(Office:Address) 的值 MTExMSBTYW4gR2FicmllbCBEcg== 為 1111 San Gabriel Dr.。
備注
PrefixFilter 是基于 Row key 的過濾條件。
至此資料查詢完成。