Crea un oggetto di connessione

Per connetterti a Bigtable utilizzando il client HBase di Cloud Bigtable per Java, devi impostare le proprietà di configurazione e creare un oggetto Connection. La creazione di un oggetto Connection è un'operazione pesante, quindi crea il minor numero possibile di oggetti:

  • Se usi la replica o se usi i profili app per identificare diversi tipi di traffico verso l'istanza, crea un oggetto Connection per profilo di app e condividi gli oggetti tra i thread nell'applicazione.
  • Se non utilizzi profili di replica o di app, crea un singolo oggetto Connection e condividilo tra i thread nell'applicazione.

Esistono alcuni modi per specificare le impostazioni di configurazione per un oggetto Connection:

  • Includi le impostazioni nel codice. Se l'applicazione utilizza più profili di app (ad esempio, se esegue diverse funzioni, con un profilo app separato per ogni funzione), devi utilizzare questa opzione.

    Puoi utilizzare questa opzione anche se preferisci mantenere le impostazioni di configurazione nel codice dell'applicazione o se non è pratico includere un file di configurazione esterno come risorsa nell'applicazione.

  • Utilizza un file hbase-site.xml per memorizzare le impostazioni. Utilizza questa opzione se la tua applicazione utilizza sia HBase che Bigtable oppure se preferisci mantenere le impostazioni di configurazione di Bigtable in un file autonomo.

Le seguenti sezioni spiegano ogni modo per configurare e creare un oggetto Connection.

Includere le impostazioni nel codice

L'esempio seguente mostra come creare un oggetto Connection nella tua applicazione. Sostituisci [VALUES_IN_BRACKETS] con i valori corretti per l'istanza:

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

Utilizzo di un file hbase-site.xml

Questa sezione spiega come creare un oggetto Connection includendo le impostazioni di configurazione in un file hbase-site.xml.

Codice di esempio

L'esempio seguente mostra come configurare e creare un oggetto Connection nella tua applicazione:

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

Nelle risorse del file JAR è incluso un file hbase-site.xml separato. Quando crei l'oggetto Configuration, il client HBase di Cloud Bigtable per Java legge automaticamente le impostazioni dal file hbase-site.xml.

Le sezioni seguenti spiegano come implementare questo metodo nell'applicazione.

Creazione del file hbase-site.xml

Nella directory src/main/resources del progetto, crea un file denominato hbase-site.xml. Il file deve contenere tutte le proprietà mostrate nell'esempio seguente. Sostituisci [VALUES_IN_BRACKETS] con i valori corretti per l'istanza:

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

Aggiunta di hbase-site.xml al file JAR

Dopo aver creato il file hbase-site.xml, devi aggiornare lo script di build per includere la directory src/main/resources nel file JAR del tuo progetto.

Se utilizzi Maven, modifica l'elemento <build> del file pom.xml per copiare le risorse nel file JAR:

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

Creazione dell'oggetto Connection

Ora puoi aggiornare il codice per creare un oggetto Configuration. Quando crei questo oggetto, il client HBase di Cloud Bigtable per Java legge automaticamente le impostazioni dal file hbase-site.xml. Puoi quindi utilizzare queste impostazioni per creare un oggetto Connection:

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

Passaggi successivi