Crea un oggetto di connessione

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

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

Esistono alcuni modi per specificare le impostazioni di configurazione per un 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 del codice dell'applicazione o, se non è pratico includere un'istruzione di configurazione come risorsa nella tua applicazione.

  • Utilizza un file hbase-site.xml per memorizzare le impostazioni. Utilizza questa opzione se le tue utilizza sia HBase che Bigtable oppure, se preferisci mantenere 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 nel la tua applicazione. Sostituisci [VALUES_IN_BRACKETS] con i valori corretti per 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 il parametro di configurazione in un file hbase-site.xml.

Codice di esempio

L'esempio seguente mostra come configurare e creare un 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, devi aggiornare la build per includere la directory src/main/resources nel file JAR del progetto.

Se utilizzi Maven, modifica l'elemento <build> del file pom.xml in copia 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 per Java di Cloud Bigtable legge 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