Hive で HBase テーブルにアクセスする - Amazon EMR

Hive で HBase テーブルにアクセスする

HBase と Apache Hive は、緊密に統合されているため、HBase に格納されたデータに対して並列処理の大量ワークロードを直接実行できます。HBase と共に Hive を使用するには、通常は同じクラスターでこれらを起動します。ただし Hive と HBase を別々のクラスターで起動することもできます。HBase と Hive を別々のクラスターに切り離して実行すると、各アプリケーションがクラスターのリソースをより効率的に使用できるため、パフォーマンスが向上する可能性があります。

次の手順は、Hive を使用してクラスターの HBase に接続する方法を説明します。

注記

Hive クラスターは 1 つの HBase クラスターにのみ接続できます。

Hive を HBase に接続するには
  1. Hive と HBase がインストールされた別々のクラスターを作成するか、HBase と Hive の両方インストールされている 1 つのクラスターを作成します。

  2. 別々のクラスターを使用する場合は、2 つのノード間で HBase と Hive のポートが開くように、セキュリティグループを変更します。

  3. SSH を使用して、Hive がインストールされているクラスターのマスターノードに接続します。詳細については、「Amazon EMR 管理ガイド」の「SSH を使用してマスターノードに接続する」を参照してください。

  4. 次のコマンドで Hive シェルを起動します。

    hive
  5. (オプション) HBase と Hive が同一のクラスターにある場合、これを行う必要はありません。Hive クラスターの HBase クライアントを、データが含まれる HBase クラスターに接続します。次の例の public-DNS-name は、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 クラスターに格納されているデータにアクセスできます。

    次の例では、マスターノードでの Hive プロンプトからの実行時に、inputTable という HBase テーブルに格納されているデータを参照する外部テーブルを作成しています。その後、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 を組み合わせた高度なユースケースと例については、「Combine NoSQL and massively parallel analytics using Apache HBase and Apache Hive on Amazon EMR」という AWS ビッグデータブログの投稿を参照してください。