Conector de Beam de HBase de Bigtable
Para ayudarte a usar Bigtable en una canalización de Dataflow, están disponibles dos conectores de E/S de Bigtable Beam de código abierto.
Si migras de HBase a Bigtable o tu aplicación llama a la API de HBase, usa el conector de Beam de HBase de Bigtable (CloudBigtableIO
) que se describe en esta página.
En todos los demás casos, debes usar el conector de Bigtable Beam (BigtableIO
) junto con el cliente de Cloud Bigtable para Java, que funciona con las APIs de Cloud Bigtable. Para comenzar a usar ese conector, consulta Conector de Bigtable Beam.
Para obtener más información sobre el modelo de programación de Apache Beam, consulta la documentación de Beam.
Comienza a usar HBase
El conector de Beam de HBase de Bigtable está escrito en Java y se compila en el cliente de HBase de Bigtable para Java. Es compatible con el SDK de Dataflow 2.x para Java, que se basa en Apache Beam. El código fuente del conector está en GitHub en el repositorio googleapis/java-bigtable-hbase.
En esta página, se proporciona una descripción general de cómo usar las transformaciones Read
y Write
.
Configura la autenticación
Para usar las muestras de Java de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para obtener más información, consulta Set up authentication for a local development environment.
Si quieres obtener información sobre cómo configurar la autenticación para un entorno de producción, consulta Set up Application Default Credentials for code running on Google Cloud.
Agrega el conector a un proyecto de Maven
Para agregar el conector de Bigtable HBase Beam a un proyecto de Maven, agrega el artefacto de Maven a tu archivo pom.xml
como una dependencia:
Especifica la configuración de Bigtable
Crea una interfaz de opciones a fin de permitir entradas para ejecutar la canalización:
Cuando lees o escribes en Bigtable, debes proporcionar un objeto de configuración CloudBigtableConfiguration
. Este objeto especifica el ID del proyecto y de la instancia que se usará en tu tabla, además del nombre de esta última:
Para la lectura, proporciona un objeto de configuración CloudBigtableScanConfiguration
, que te permita especificar un objeto Scan
de Apache HBase que limite y filtre los resultados de una lectura. Si deseas obtener más detalles, consulta Lee desde Bigtable.
Lee desde Bigtable
Para leer desde una tabla de Bigtable, aplica una transformación Read
al resultado de una operación CloudBigtableIO.read
. La transformación Read
muestra un objeto PCollection
de HBase en Result
, donde cada elemento de PCollection
representa una sola fila en la tabla.
De forma predeterminada, una operación CloudBigtableIO.read
muestra todas las filas de la tabla. Puedes usar un objeto Scan
de HBase para limitar la lectura a un rango de claves de fila dentro de tu tabla o aplicar filtros a los resultados de la lectura. Para usar un objeto Scan
, inclúyelo en tu CloudBigtableScanConfiguration
.
Por ejemplo, puedes agregar un Scan
que muestre solo el primer par clave-valor de cada fila de tu tabla, lo que resulta útil cuando se cuenta el número de filas en la tabla:
Escribe en Bigtable
A fin de escribir en una tabla de Bigtable, debes usar apply
para una operación CloudBigtableIO.writeToTable
. Deberás realizar esta operación en un PCollection
de HBase de objetos Mutation
, que pueden incluir objetos Put
y Delete
.
La tabla de Bigtable ya debe existir y debe tener definida la familia de columnas correspondiente. El conector de Dataflow no crea tablas y familias de columnas sobre la marcha. Puedes usar la CLI de cbt
para crear una tabla y configurar familias de columnas, o puedes hacerlo de manera programática.
Antes de escribir en Bigtable, debes crear tu canalización de Dataflow para que los objetos Put y Delete puedan serializarse en la red:
En general, deberás realizar una transformación, como ParDo
, para formatear los datos de salida en una colección de objetos Put
o Delete
de HBase. En el siguiente ejemplo, se muestra una transformación DoFn
que toma el valor actual y lo usa como la clave de fila para un Put
. Luego, puedes escribir los objetos Put
en Bigtable.
Para habilitar el control de flujo de escritura por lotes, establece BIGTABLE_ENABLE_BULK_MUTATION_FLOW_CONTROL
en true
. Esta función limita automáticamente la tasa de tráfico para las solicitudes de escritura por lotes y permite que el ajuste de escala automático de Bigtable agregue o quite nodos automáticamente para controlar tu trabajo de Dataflow.
Este es el ejemplo completo de escritura, incluida la variación que habilita el control de flujo de escritura por lotes.