Crie um objeto de associação

Para se ligar ao Bigtable através do cliente HBase do Cloud Bigtable para Java, tem de definir propriedades de configuração e, em seguida, criar um objeto Connection. A criação de um objeto Connection é uma operação pesada, por isso, crie o menor número possível destes objetos:

  • Se usar a replicação ou se usar perfis de apps para identificar diferentes tipos de tráfego para a sua instância, crie um objeto Connection por perfil de app e partilhe os objetos entre threads na sua aplicação.
  • Se não usar a replicação nem os perfis de apps, crie um único objeto Connection e partilhe-o entre as threads na sua aplicação.

Existem algumas formas de especificar as definições de configuração de um Connectionobjeto:

  • Inclua as definições no seu código. Se a sua aplicação usar vários perfis da app (por exemplo, se executar várias funções diferentes, com um perfil da app separado para cada função), tem de usar esta opção.

    Também pode usar esta opção se preferir manter as definições de configuração no código da sua aplicação ou se não for prático incluir um ficheiro de configuração externo como um recurso na sua aplicação.

  • Use um ficheiro hbase-site.xml para armazenar definições. Use esta opção se a sua aplicação usar o HBase e o Bigtable, ou se preferir manter as definições de configuração do Bigtable num ficheiro autónomo.

As secções seguintes explicam cada forma de configurar e criar um Connection objeto.

Incluir definições no código

O exemplo seguinte mostra como pode criar um objeto Connection na sua própria aplicação. Substitua [VALUES_IN_BRACKETS] pelos valores corretos para a sua 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);
  }
}

Usar um ficheiro hbase-site.xml

Esta secção explica como criar um objeto Connection incluindo as definições de configuração num ficheiro hbase-site.xml.

Exemplo de código

O exemplo seguinte mostra como pode configurar e criar um objeto Connection na sua própria aplicação:

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 ficheiro hbase-site.xml separado está incluído nos recursos do ficheiro JAR. Quando cria o objeto Configuration, o cliente HBase do Cloud Bigtable para Java lê automaticamente as definições do ficheiro hbase-site.xml.

As secções seguintes explicam como implementar este método na sua aplicação.

Criar o ficheiro hbase-site.xml

No diretório src/main/resources do seu projeto, crie um ficheiro denominado hbase-site.xml. O ficheiro deve conter todas as propriedades apresentadas no exemplo seguinte. Substitua [VALUES_IN_BRACKETS] pelos valores corretos para a sua 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>

Adicionar hbase-site.xml ao ficheiro JAR

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

Se estiver a usar o Maven, edite o elemento <build> do ficheiro pom.xml para copiar os recursos para o ficheiro JAR:

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

Criar o objeto Connection

Agora, pode atualizar o seu código para criar um objeto Configuration. Quando cria este objeto, o cliente HBase do Cloud Bigtable para Java lê automaticamente as definições do ficheiro hbase-site.xml. Em seguida, pode usar estas definições para criar um objeto Connection:

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

O que se segue?