Créer un objet de connexion

Pour vous connecter à Bigtable à l'aide du client Cloud Bigtable HBase pour Java, vous devez définir les propriétés de configuration, puis créer un objet Connection. La création d'un objet Connection est une opération lourde. Nous vous recommandons d'y recourir le moins souvent possible :

  • Si vous utilisez la réplication ou des profils d'application pour identifier différents types de trafic vers votre instance, créez un objet Connection par profil d'application et partagez les objets entre les threads de votre application.
  • Si vous n'utilisez ni la réplication, ni les profils d'applications, créez un seul objet Connection et partagez-le entre les threads de votre application.

Il existe plusieurs façons de spécifier les paramètres de configuration d'un objet Connection :

  • Incluez les paramètres dans votre code. Si votre application utilise plusieurs profils d'application (par exemple, si elle exécute plusieurs fonctions, avec un profil d'application distinct pour chaque fonction), vous devez utiliser cette option.

    Vous pouvez également utiliser cette option si vous préférez conserver les paramètres de configuration dans le code de votre application ou s'il n'est pas pratique d'inclure un fichier de configuration externe en tant que ressource dans votre application.

  • Utilisez un fichier hbase-site.xml pour stocker les paramètres. Utilisez cette option si votre application utilise à la fois HBase et Bigtable, ou si vous préférez conserver vos paramètres de configuration Bigtable dans un fichier autonome.

Les sections suivantes décrivent les différentes manières de configurer et créer un objet Connection.

Inclure les paramètres dans votre code

L'exemple suivant montre comment créer un objet Connection dans votre application. Remplacez les valeurs entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées pour votre instance :

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

Utiliser un fichier hbase-site.xml

Cette section explique comment créer un objet Connection en incluant les paramètres de configuration dans un fichier hbase-site.xml.

Exemple de code

L'exemple suivant montre comment configurer et créer un objet Connection dans votre application :

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

Un fichier hbase-site.xml distinct est inclus dans les ressources du fichier JAR. Lorsque vous créez l'objet Configuration, le client Cloud Bigtable HBase pour Java lit automatiquement les paramètres à partir du fichier hbase-site.xml.

Les sections suivantes expliquent comment mettre en œuvre cette méthode dans votre application.

Créer le fichier hbase-site.xml

Dans le répertoire src/main/resources de votre projet, créez un fichier appelé hbase-site.xml. Ce fichier doit contenir toutes les propriétés présentées dans l'exemple suivant. Remplacez les valeurs entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées pour votre instance :

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

Ajouter le fichier hbase-site.xml au fichier JAR

Après avoir créé le fichier hbase-site.xml, vous devez mettre à jour votre script de compilation afin d'inclure le répertoire src/main/resources dans le fichier JAR de votre projet.

Si vous utilisez Maven, modifiez l'élément <build> de votre fichier pom.xml pour copier les ressources dans votre fichier JAR :

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

Créer l'objet Connexion

Vous pouvez maintenant mettre à jour votre code pour créer un objet Configuration. Lorsque vous créez cet objet, le client Cloud Bigtable HBase pour Java lit automatiquement les paramètres à partir du fichier hbase-site.xml. Vous pouvez ensuite utiliser ces paramètres pour créer un objet Connection :

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

Étape suivante