Cloud Bigtable への接続

Cloud Bigtable に接続するためには、いくつかの構成プロパティを設定してから、Connection オブジェクトを作成する必要があります。Connection オブジェクトの作成は負荷の大きなオペレーションであるため、このオブジェクトの作成数はなるべく少なくしてください。

  • レプリケーションを使用する場合、またはアプリ プロファイルを使用してインスタンスへのさまざまな種類のトラフィックを識別する場合、アプリ プロファイルごとに 1 つの Connection オブジェクトを作成し、アプリケーション内のスレッド間でこれらのオブジェクトを共有します。
  • レプリケーションやアプリ プロファイルを使用しない場合は、単一の Connection オブジェクトを作成し、アプリケーション内のスレッド間で共有します。

Connection オブジェクトの構成設定を指定する方法はいくつかあります。

  • 設定をコードに含める。アプリケーションで複数のアプリ プロファイルを使用する場合(たとえば、複数の機能を使用していて、機能ごとに異なるアプリ プロファイルを使用する場合)は、このオプションを使用する必要があります。

    また、このオプションは、アプリケーションのコードで構成設定を保持したい場合や、アプリケーションのリソースとして外部構成ファイルを使用することが現実的でない場合にも使用できます。

  • hbase-site.xml ファイルを使用して設定を保存する。このオプションは、アプリケーションで HBase と Cloud Bigtable の両方を使用している場合や、Cloud Bigtable の構成設定を単独のファイルに保持したい場合に使用します。

次のセクションでは、Connection オブジェクトを構成して作成するそれぞれの方法について説明します。

設定をコードに含める

次の例は、独自のアプリケーションで Connection オブジェクトを作成する方法を示しています。[VALUES_IN_BRACKETS] は、使用するインスタンスでの正しい値に置き換えます。

package com.example.helloworld;

import com.google.cloud.bigtable.hbase.BigtableConfiguration;
import com.google.cloud.bigtable.hbase.BigtableOptionsFactory;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Connection;

public class BigtableHelper {
  private static final String PROJECT_ID = "[YOUR_PROJECT_ID]";
  private static final String INSTANCE_ID = "[YOUR_INSTANCE_ID]";
  // Include the following line if you are using app profiles.
  // If you do not include the following line, the connection uses the
  // default app profile.
  private static final STRING APP_PROFILE_ID = "[YOUR_APP_PROFILE_ID]";

  private static Connection connection = null;

  public static void connect() throws IOException {
    Configuration config = BigtableConfiguration.configure(PROJECT_ID, INSTANCE_ID);
    // Include the following line if you are using app profiles.
    // If you do not include the following line, the connection uses the
    // default app profile.
    config.set(BigtableOptionsFactory.APP_PROFILE_ID_KEY, APP_PROFILE_ID);

    connection = BigtableConfiguration.connect(config);
  }
}

hbase-site.xml ファイルを使用する

このセクションでは、hbase-site.xml ファイルに構成設定を含めて Connection オブジェクトを作成する方法について説明します。

サンプルコード

次の例は、独自のアプリケーションで Connection オブジェクトを構成して作成する方法を示しています。

package com.example.helloworld;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

public class BigtableHelper {
  private static Connection connection = null;

  public static void connect() throws IOException {
    Configuration config = HBaseConfiguration.create();
    connection = ConnectionFactory.createConnection(config);
  }
}

別の hbase-site.xml ファイルが JAR ファイルのリソースに含まれています。Configuration オブジェクトを作成すると、Java 用 Cloud Bigtable HBase クライアントは hbase-site.xml ファイルから設定を自動的に読み取ります。

次のセクションでは、アプリケーションでこのメソッドを実装する方法について説明します。

hbase-site.xml ファイルの作成

プロジェクトの src/main/resources ディレクトリに hbase-site.xml という名前のファイルを作成します。このファイルには、次の例で示しているすべてのプロパティが含まれている必要があります。[VALUES_IN_BRACKETS] は、使用するインスタンスでの正しい値に置き換えます。

<configuration>
  <property>
    <name>hbase.client.connection.impl</name>
    <value>com.google.cloud.bigtable.hbase1_x.BigtableConnection</value>
  </property>
  <property>
    <name>google.bigtable.project.id</name>
    <value>[YOUR_PROJECT_ID]</value>
  </property>
  <property>
    <name>google.bigtable.instance.id</name>
    <value>[YOUR_INSTANCE_ID]</value>
  </property>
  <!--
    Include the following property if you are using app profiles.
    If you do not include the following property, the connection uses the
    default app profile.
  -->
  <property>
    <name>google.bigtable.app.profile.id</name>
    <value>[YOUR_APP_PROFILE_ID]</value>
  </property>
</configuration>

JAR ファイルへの hbase-site.xml の追加

hbase-site.xml ファイルを作成した後、ビルド スクリプトを更新してプロジェクトの JAR ファイルに src/main/resources ディレクトリを含める必要があります。

Maven を使用している場合は、pom.xml ファイルの <build> 要素を編集してリソースを JAR ファイルにコピーします。

<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>

Connection オブジェクトの作成

これで、コードを更新して Configuration オブジェクトを作成できます。このオブジェクトを作成すると、Java 用 Cloud Bigtable HBase クライアントは hbase-site.xml ファイルから設定を自動的に読み取ります。その後、これらの設定を使用して Connection オブジェクトを作成できます。

Configuration config = HBaseConfiguration.create();
connection = ConnectionFactory.createConnection(config);

次のステップ