Como se conectar ao Cloud Bigtable

Para se conectar ao Cloud Bigtable, você precisa definir várias propriedades de configuração e criar um objeto Connection. A criação de um objeto Connection é uma operação de grande porte. Portanto, crie o menor número possível desses objetos:

  • Caso você use a replicação ou perfis de aplicativo para identificar tipos diferentes de tráfego para a instância, crie um objeto Connection por perfil de aplicativo e compartilhe-os entre linhas de execução no aplicativo.
  • Se você não usa replicação ou perfis de aplicativo, crie um único objeto Connection e compartilhe-o entre linhas de execução no aplicativo.

Há algumas maneiras de especificar as definições de configuração para um objeto Connection:

  • Incluir as configurações no seu código. Caso o aplicativo use vários perfis de app (por exemplo, caso realize várias funções diferentes, com um perfil de app separado para cada função), você precisará usar essa opção.

    Você também poderá usar essa opção se preferir manter definições de configuração no código do aplicativo ou se não for prático incluir um arquivo de configuração externo como um recurso no aplicativo.

  • Use um arquivo hbase-site.xml para armazenar as configurações. Use essa opção caso o aplicativo use o HBase e o Cloud Bigtable ou caso você prefira manter as definições de configuração do Cloud Bigtable em um arquivo independente.

As seções a seguir explicam cada maneira de configurar e criar um objeto Connection.

Como incluir configurações no código

O exemplo a seguir mostra como criar um objeto Connection no seu próprio aplicativo. Substitua [VALUES_IN_BRACKETS] pelos valores corretos da instância:

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

Como usar um arquivo hbase-site.xml

Nesta seção, explicamos como criar um objeto Connection incluindo as definições de configuração em um arquivo hbase-site.xml.

Código de amostra

O exemplo a seguir mostra como configurar e criar um objeto Connection no seu próprio aplicativo:

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

Um arquivo hbase-site.xml separado é incluído nos recursos do arquivo JAR. Quando você cria o objeto Configuration, o cliente HBase do Cloud Bigtable para Java lê automaticamente as configurações do arquivo hbase-site.xml.

Veja nas seções a seguir como implementar esse método no seu aplicativo.

Criação do arquivo hbase-site.xml

No diretório src/main/resources do projeto, crie um arquivo chamado hbase-site.xml. O arquivo deve conter todas as propriedades mostradas no exemplo a seguir. Substitua [VALUES_IN_BRACKETS] pelos valores corretos da instância:

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

Adição de hbase-site.xml ao arquivo JAR

Depois de criar o arquivo hbase-site.xml, você precisará atualizar o script de compilação para incluir o diretório src/main/resources no arquivo JAR do projeto.

Se você estiver usando o Maven, edite o elemento <build> do arquivo pom.xml para copiar os recursos para o arquivo JAR:

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

Criação do objeto Connection

Agora é possível atualizar seu código para criar um objeto Configuration. Quando você cria esse objeto, o cliente HBase do Cloud Bigtable para Java lê automaticamente as configurações do arquivo hbase-site.xml. É possível usar estas configurações para criar um objeto Connection:

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

A seguir