Mit Cloud Bigtable verbinden

Wenn Sie eine Verbindung zu Cloud Bigtable herstellen möchten, müssen Sie verschiedene Konfigurationsattribute festlegen und dann ein Connection-Objekt erstellen. Ein Connection-Objekt zu erstellen, ist ein ressourcenintensiver Vorgang. Sie sollten daher so wenige dieser Objekte erstellen wie möglich.

  • Wenn Sie eine Replikation verwenden oder wenn Sie mithilfe von Anwendungsprofilen unterschiedliche Arten von Traffic für Ihre Instanz ermitteln, erstellen Sie ein Connection-Objekt pro Anwendungsprofil und legen dann eine gemeinsame Nutzung der Objekte für die Threads in Ihrer Anwendung fest
  • Wenn Sie keine Replikations- oder Anwendungsprofile verwenden, erstellen Sie ein einzelnes Connection-Objekt und geben Sie es für Threads in Ihrer Anwendung frei.

Es gibt mehrere Möglichkeiten, die Konfigurationseinstellungen für ein Connection-Objekt anzugeben:

  • Einstellungen in den Code einbeziehen Wenn die Anwendung mehrere Anwendungsprofile verwendet (z. B. wenn sie mehrere verschiedene Funktionen mit einem separaten Anwendungsprofil für jede Funktion ausführt), müssen Sie diese Option verwenden.

    Sie können diese Option auch verwenden, wenn Sie die Konfigurationseinstellungen im Code der Anwendung behalten möchten oder es nicht praktikabel ist, eine externe Konfigurationsdatei als Ressource in die Anwendung aufzunehmen.

  • Speichern Sie die Einstellungen in einer hbase-site.xml-Datei. Nutzen Sie diese Option, wenn Ihre Anwendung sowohl HBase als auch Cloud Bigtable nutzt oder wenn Sie es vorziehen, die Cloud Bigtable-Konfigurationseinstellungen in einer eigenständigen Datei zu speichern.

In den folgenden Abschnitten werden alle Möglichkeiten erläutert, um ein Connection-Objekt zu erstellen und zu konfigurieren.

Einstellungen in den Code einbeziehen

Das folgende Beispiel zeigt, wie Sie ein Connection-Objekt in einer eigenen Anwendung erstellen können. Ersetzen Sie [VALUES_IN_BRACKETS] durch die korrekten Werte für die Instanz:

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-Datei verwenden

In diesem Abschnitt wird erläutert, wie Sie ein Connection-Objekt erstellen, indem Sie die Konfigurationseinstellungen in eine hbase-site.xml-Datei einfügen.

Beispielcode

Das folgende Beispiel zeigt, wie Sie ein Connection-Objekt in einer eigenen Anwendung erstellen und konfigurieren können:

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);
  }
}

Eine separate hbase-site.xml-Datei ist in den Ressourcen der JAR-Datei enthalten. Wenn Sie das Configuration-Objekt erstellen, liest der Cloud Bigtable HBase-Client für Java automatisch die Einstellungen aus der Datei hbase-site.xml.

Im folgenden Abschnitt wird erklärt, wie diese Methode in Ihre Anwendung implementiert werden kann.

hbase-site.xml-Datei erstellen

Erstellen Sie im Verzeichnis src/main/resources Ihres Projekts eine Datei mit dem Namen hbase-site.xml. Die Datei sollte alle Attribute beinhalten, die im folgenden Beispiel gezeigt werden. Ersetzen Sie [VALUES_IN_BRACKETS] durch die korrekten Werte für die Instanz:

<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>

hbase-site.xml der JAR-Datei hinzufügen

Nachdem Sie die Datei hbase-site.xml erstellt haben, müssen Sie das Build-Skript aktualisieren, um das Verzeichnis src/main/resources in die JAR-Datei Ihres Projekts aufzunehmen.

Wenn Sie Maven verwenden, bearbeiten Sie das Element <build> der Datei pom.xml, um die Ressourcen in die JAR-Datei zu kopieren:

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

Connection-Objekt erstellen

Jetzt können Sie den Code aktualisieren, um ein Configuration-Objekt zu erstellen. Wenn Sie das Objekt erstellen, liest der Cloud Bigtable HBase-Client für Java automatisch die Einstellungen aus der Datei hbase-site.xml. Anschließend können Sie mit diesen Einstellungen ein Connection-Objekt erstellen:

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

Weitere Informationen