Connecteur Beam Bigtable HBase
Pour vous aider à utiliser Bigtable dans un pipeline Dataflow, deux connecteurs d'E/S Bigtable Beam Open Source sont disponibles.
Si vous effectuez une migration de HBase vers Bigtable ou votre application
appelle l'API HBase, utilisez le connecteur Bigtable HBase Beam
(CloudBigtableIO
) abordés sur cette page.
Dans tous les autres cas, vous devez utiliser le connecteur Bigtable Beam (BigtableIO
) avec le client Cloud Bigtable pour Java, qui fonctionne avec les API Cloud Bigtable. Pour commencer à utiliser cette
consultez la section Connecteur Bigtable Beam.
Pour en savoir plus sur le modèle de programmation Apache Beam, consultez la documentation Beam.
Premiers pas avec HBase
Le connecteur Beam Bigtable HBase est écrit en Java et est basé sur le client Bigtable HBase pour Java. Il est compatible avec le SDK Dataflow 2.x pour Java, basé sur Apache Beam. Source du connecteur sur GitHub, dans le dépôt googleapis/java-bigtable-hbase.
Cette page présente l'utilisation des transformations Read
et Write
.
Configurer l'authentification
Pour utiliser les exemples Java de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.
Pour en savoir plus sur la configuration de l'authentification dans un environnement de production, consultez Configurer le service Identifiants par défaut de l'application pour le code exécuté sur Google Cloud.
Ajouter le connecteur à un projet Maven
Pour ajouter le connecteur Bigtable HBase Beam à un projet Maven, ajoutez
l'artefact Maven à votre fichier pom.xml
en tant que dépendance:
Spécifier la configuration Bigtable
Créez une interface d'options pour permettre des entrées pour le fonctionnement de votre pipeline :
Lorsque vous lisez ou écrivez dans 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, indiquez un objet de configuration CloudBigtableScanConfiguration
.
qui vous permet de spécifier un objet Apache HBase Scan
limite et filtre les résultats d'une lecture. Pour en savoir plus, consultez la section Lire depuis Bigtable.
Lire à partir de Bigtable
Pour lire depuis une table 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 Bigtable
Pour écrire dans une table 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 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 pouvez utiliser la CLI cbt
pour créer une table et configurer des familles de colonnes, ou vous pouvez le faire de manière automatisée.
Avant d'écrire dans Bigtable, vous devez créer votre pour que les opérations de type "put" et "delete" puissent être sérialisées 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
qui prend la valeur actuelle et l'utilise comme clé de ligne pour un objet Put
: Vous pouvez ensuite écrire les objets Put
dans Bigtable :
Pour activer le contrôle de flux d'écriture par lot, définissez BIGTABLE_ENABLE_BULK_MUTATION_FLOW_CONTROL
sur true
. Cette fonctionnalité limite automatiquement le débit du trafic pour les requêtes d'écriture par lot et permet à l'autoscaling Bigtable d'ajouter ou de supprimer automatiquement des nœuds pour gérer votre tâche Dataflow.
Voici l'exemple d'écriture complet, y compris la variante qui permet un contrôle de flux en écriture.