使用 Hive 存取 HBase 資料表 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Hive 存取 HBase 資料表

HBase 與 Apache Hive 緊密整合,讓您可直接對存放於 HBase 的資料執行大規模平行處理工作負載。若要透過 HBase 使用 Hive,通常您可以在相同的叢集上啟動它們。然而,您也可以在個別叢集上啟動 Hive 和 HBase。在不同的叢集上執行 HBase 和 Hive 可以提高效能,因為這可讓每個應用程式更有效率地使用叢集資源。

以下程序示範如何在使用 Hive 的叢集上連接到 HBase。

注意

您只能連接一個 Hive 叢集至單一 HBase 叢集。

連接 Hive 至 HBase
  1. 透過已安裝的 Hive 與 HBase 建立個別叢集,或透過同時安裝的 HBase 與 Hive 建立單一叢集。

  2. 如果您使用不同的叢集,請修改您的安全群組,以便 HBase 和 Hive 連接埠在這兩個主要節點之間開啟。

  3. 使用 SSH 連接到已安裝 Hive 的叢集的主節點。如需詳細資訊,請參閱《Amazon EMR 管理指南》中的使用 SSH 連接至主節點

  4. 透過以下命令啟動 Hive shell。

    hive
  5. (選用) 如果 HBase 和 Hive 位於相同的叢集,則您不需要執行此操作。在您的 Hive 叢集上將 HBase 用戶端連接到包含您資料的 HBase 叢集。在下列範例中,公用 DNS 名稱會取代為 HBase 叢集主要節點的公用 DNS 名稱,例如:。ec2-50-19-76-67.compute-1.amazonaws.com

    set hbase.zookeeper.quorum=public-DNS-name;
  6. 依需要在 HBase 資料上繼續執行 Hive 查詢,或查看下一個程序。

從 Hive 存取 HBase 資料
  • 在 Hive 和 HBase 叢集之間的連線已建立後 (如之前的程序所示),您可以透過在 Hive 建立一個外部表格,以存取存放在 HBase 叢集上的資料。

    下面的例子中,從主節點上的蜂巢提示運行時,創建一個引用存儲在 HBase 的表稱為inputTable數據的外部表。您可以參考在 Hive 陳述式中的 inputTable 來查詢和修改 HBase 叢集中存放的資料。

    set hbase.zookeeper.quorum=ec2-107-21-163-157.compute-1.amazonaws.com; create external table inputTable (key string, value string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping" = ":key,f1:col1") tblproperties ("hbase.table.name" = "t1"); select count(key) from inputTable ;

有關結合 HBase 和 Hive 的更高級用例和示例,請參閱 AWS 大數據博客文章,在 Amazon EMR 上使用 Apache HBase 和 Apache Hive 結合 NoSQL 和大規模 parallel 分析