E/S de Bigtable

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 le permiten leer o escribir una PCollection de Row de Bigtable desde 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 manera más fácil de proporcionar estas opciones es compilarlas mediante 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á especificar el ID de la tabla y BigtableOptions mediante .withTableId y .withBigtableOptions, respectivamente. De forma predeterminada, BigtableIO.read() analiza todo el objeto 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 desea escanear un subconjunto de filas en la tabla de Bigtable especificada, puede proporcionar un objeto RowFilter de Bigtable. Si proporcionas un RowFilter, BigtableIO.read() mostrará solo los 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, aplique la transformación BigtableIO.write() a la PCollection que contiene sus datos de salida. Deberá especificar el ID de la tabla y BigtableOptions mediante .withTableId y .withBigtableOptions, respectivamente.

Cómo formatear los datos de salida de Bigtable

El receptor de datos BigtableIO realiza cada operación de escritura como un conjunto de mutaciones de fila al objeto Bigtable de destino. Por lo tanto, debe dar formato a sus datos de salida como PCollection<KV<ByteString, Iterable<Mutation>>>. Cada elemento de PCollection debe contener:

  • La clave de la fila que se escribirá como ByteString.
  • Un Iterable de objetos Mutation que representan una serie de operaciones idempotentes de mutación de fila.