Conéctate a Bigtable

Para conectarte a Cloud Bigtable, deberás establecer varias propiedades de configuración y, luego, crear un objeto Connection. La creación de un objeto Connection es una operación pesada, así que crea la menor cantidad posible de estos objetos:

  • Si usas la replicación o los perfiles de apps para identificar los diferentes tipos de tráfico a la instancia, crea un objeto Connection por perfil de app y comparte los objetos entre los subprocesos de la aplicación.
  • Si no usas la replicación ni los perfiles de apps, crea un solo objeto Connection y compártelo entre los subprocesos de la aplicación.

Existen varias formas de especificar la configuración de un objeto Connection:

  • Incluye la configuración en el código. Si la aplicación usa varios perfiles (por ejemplo, si ejecuta funciones diferentes con un perfil de app distinto para cada una), debes usar esta opción.

    También puedes usar esta opción si prefieres mantener la configuración en el código de la aplicación o si no es práctico incluir un archivo de configuración externo como recurso en la aplicación.

  • Usa un archivo hbase-site.xml para almacenar la configuración. Usa esta opción si la aplicación usa HBase y Bigtable o si prefieres mantener la configuración de Bigtable en un archivo independiente.

En las siguientes secciones, se explican las distintas maneras de configurar y crear un objeto Connection.

Incluye la configuración en el código

En el siguiente ejemplo, se muestra cómo crear un objeto Connection en tu propia aplicación. Reemplaza [VALUES_IN_BRACKETS] por los valores correctos para la instancia:

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

Usa un archivo hbase-site.xml

En esta sección, se explica cómo crear un objeto Connection mediante la inclusión de la configuración en un archivo hbase-site.xml.

Código de muestra

En el siguiente ejemplo, se muestra cómo configurar y crear un objeto Connection en tu propia aplicación:

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

Se incluye un archivo hbase-site.xml independiente en los recursos del archivo JAR. Cuando creas el objeto Configuration, el cliente de HBase de Bigtable para Java lee de forma automática la configuración del archivo hbase-site.xml.

En la siguiente sección, se explica cómo implementar este método en la aplicación.

Crea el archivo hbase-site.xml

En el directorio src/main/resources del proyecto, crea un archivo llamado hbase-site.xml. Este debería contener todas las propiedades que se muestran en el siguiente ejemplo. Reemplaza [VALUES_IN_BRACKETS] con los valores correctos para la instancia:

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

Agrega hbase-site.xml al archivo JAR

Después de crear el archivo hbase-site.xml, deberás actualizar la secuencia de comandos de compilación para incluir el directorio src/main/resources en el archivo JAR del proyecto.

Si usas Maven, edita el elemento <build> del archivo pom.xml para copiar los recursos en el archivo JAR:

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

Crea el objeto Connection

Ahora puedes actualizar el código para crear un objeto Configuration. Cuando creas este objeto, el cliente de HBase de Bigtable para Java lee de forma automática la configuración del archivo hbase-site.xml. Luego, puedes usar esta configuración para crear un objeto Connection:

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

¿Qué sigue?