Los SDK de Dataflow proporcionan una API para leer y escribir los datos en una base de datos de Google Cloud Bigtable. La fuente y el receptor BigtableIO
te permiten leer o escribir una PCollection
de objetos Row
de un Bigtable determinado.
Cómo configurar opciones de Bigtable
Cuando lees o escribes en Bigtable, debes proporcionar un ID de tabla y un conjunto de opciones de Bigtable. Estas opciones contienen información necesaria para identificar el clúster de Bigtable de destino, que incluye lo siguiente:
- ID del proyecto
- ID de clúster
- ID de zona
La forma más fácil de proporcionar estas opciones es construirlas con BigtableOptions.Builder
en el paquete com.google.cloud.bigtable.config.BigtableOptions
:
BigtableOptions.Builder optionsBuilder = new BigtableOptions.Builder() .setProjectId("project") .setClusterId("cluster") .setZoneId("zone");
Cómo leer desde Bigtable
Para leer desde Bigtable, aplica la transformación BigtableIO.read()
a tu objeto Pipeline
. Deberás especificar un ID de tabla y BigtableOptions
con .withTableId
y .withBigtableOptions
, respectivamente. De forma predeterminada, BigtableIO.read()
analiza todo el Bigtable especificado y muestra PCollection
de los objetos Row
de Bigtable:
// Scan the entire table. PCollection <Row> btRows = p.apply("read", BigtableIO.read() .withBigtableOptions(optionsBuilder) .withTableId("table"));
Si deseas escanear un subconjunto de las filas en el Bigtable especificado, puedes proporcionar un objeto RowFilter
de Bigtable. Si proporcionas un RowFilter
, BigtableIO.read()
mostrará solo las Row
que coincidan con el filtro:
// Read only rows that match the specified filter. RowFilter filter = ...; PCollection <Row> filteredBtRows = p.apply("filtered read", BigtableIO.read() .withBigtableOptions(optionsBuilder) .withTableId("table") .withRowFilter(filter));
Cómo escribir en Bigtable
Para escribir en Bigtable, aplica la transformación BigtableIO.write()
a la PCollection
que contiene tus datos de salida. Deberás especificar un ID de tabla y BigtableOptions
con .withTableId
y .withBigtableOptions
, respectivamente.
Cómo formatear los datos de salida de Bigtable
El receptor de datos de BigtableIO
realiza cada operación de escritura como un conjunto de mutaciones de fila al Bigtable de destino. Por lo tanto, debes formatear tus datos de salida como PCollection<KV<ByteString, Iterable<Mutation>>>
. Cada elemento en PCollection
debe contener lo siguiente:
- La clave de la fila que se escribirá como
ByteString
. - Un
Iterable
de objetosMutation
que representan una serie de operaciones de mutación de fila idempotentes.