Le connecteur Cloud Dataflow pour Cloud Bigtable permet d'utiliser Cloud Bigtable dans un pipeline Cloud Dataflow. Vous pouvez utiliser le connecteur pour les opérations par lots et pour les opérations de streaming.
Le connecteur est écrit dans Java et est construit sur le client Cloud Bigtable HBase pour Java. Il est compatible avec le SDK Dataflow 2.x pour Java, basé sur Apache Beam. Le code source du connecteur se trouve sur GitHub, dans le dépôt googleapis/java-bigtable-hbase.
Cette page décrit l'utilisation des transformations Read
et Write
avec le connecteur Cloud Dataflow. Vous pouvez également consulter la documentation complète de l'API pour en savoir plus sur le connecteur Cloud Dataflow.
Ajouter le connecteur à un projet Maven
Pour ajouter le connecteur Cloud Dataflow à un projet Maven, ajoutez l'artefact Maven au fichier pom.xml
, sous la forme d'une dépendance :
Définir la configuration de Cloud Bigtable
Créez une interface d'options pour permettre des entrées pour le fonctionnement de votre pipeline :
Lorsque vous lisez ou écrivez dans Cloud Bigtable, vous devez fournir un objet de configuration CloudBigtableConfiguration
. Cet objet indique l'ID de projet et l'ID d'instance de votre table, ainsi que le nom de la table elle-même :
Pour la lecture, fournissez un objet de configuration CloudBigtableScanConfiguration
, qui vous permet de spécifier un objet Apache HBase Scan
qui limite et filtre les résultats d'une lecture. Pour en savoir plus, consultez la section Lire depuis Cloud Bigtable.
Lire depuis Cloud Bigtable
Pour lire depuis une table Cloud Bigtable, vous devez appliquer une transformation Read
au résultat d'une opération CloudBigtableIO.read
. La transformation Read
renvoie une collection PCollection
d'objets HBase Result
, où chaque élément de la PCollection
représente une ligne individuelle de la table.
Par défaut, une opération CloudBigtableIO.read
renvoie toutes les lignes de votre table. Vous pouvez utiliser un objet HBase Scan
pour limiter la lecture à une plage de clés de ligne de la table, ou pour appliquer des filtres aux résultats de la lecture. Pour utiliser un objet Scan
, incluez-le dans votre objet CloudBigtableScanConfiguration
.
Par exemple, vous pouvez ajouter un élément Scan
qui renvoie seulement la première paire clé-valeur de chaque ligne de la table, ce qui est utile lorsque vous comptez le nombre de lignes de la table :
Écrire dans Cloud Bigtable
Pour écrire dans une table Cloud Bigtable, vous devez appliquer (apply
) une opération CloudBigtableIO.writeToTable
. Cette opération doit être effectuée sur une collection PCollection
d'objets HBase Mutation
, qui peut inclure des objets Put
et Delete
.
La table Cloud Bigtable doit déjà exister et les familles de colonnes appropriées doivent être définies. Le connecteur Dataflow ne crée pas de tables ni de familles de colonnes à la volée. Vous avez la possibilité d'utiliser l'outil de ligne de commande cbt
afin de créer une table et de configurer des familles de colonnes, ou vous pouvez le faire de manière automatisée.
Avant d'écrire dans Cloud Bigtable, vous devez créer votre pipeline Cloud Dataflow afin que les objets "put" et "delete" puissent être sérialisés sur le réseau :
En général, vous devez effectuer une transformation, telle que ParDo
, pour mettre en forme vos données de sortie en une collection d'objets HBase Put
ou Delete
. L'exemple suivant illustre une transformation DoFn
simple qui prend la valeur actuelle et l'utilise comme clé de ligne pour un objet Put
: Vous pouvez ensuite écrire les objets Put
dans Cloud Bigtable :
Exemple d'écriture complet.