Crea un oggetto di connessione

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

  • Se utilizzi la replica o i profili dell'app per identificare diversi tipi di traffico verso la tua istanza, crea un oggetto Connection per profilo dell'app e condividilo tra i thread della tua applicazione.
  • Se non utilizzi la replica o i profili dell'app, crea un singolo oggetto Connection e condividilo tra i thread della tua applicazione.

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

  • Includi le impostazioni nel codice. Se la tua 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 della tua applicazione o se non è pratico includere un file di configurazione esterno come risorsa nella tua applicazione.

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

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

Inclusione delle impostazioni nel codice

L'esempio seguente mostra come creare un oggetto Connection nella tua applicazione. Sostituisci [VALUES_IN_BRACKETS] con i valori corretti per la tua 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);
  }
}

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

Le sezioni seguenti spiegano come implementare questo metodo nella tua 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 la tua 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, dovrai aggiornare lo script di compilazione per includere la directory src/main/resources nel file JAR del 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 Cloud Bigtable HBase 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