Connecteur Flink Bigtable
Apache Flink est un framework de traitement de flux qui vous permet de manipuler des données en temps réel. Si vous disposez d'une table Bigtable, vous pouvez utiliser un connecteur Flink Bigtable pour diffuser, sérialiser et écrire des données de la source de données spécifiée dans Bigtable. Le connecteur vous permet d'effectuer les opérations suivantes à l'aide de l'API Apache Flink Table ou de l'API Datastream :
- Créer un pipeline
- Sérialisez les valeurs de votre source de données dans des entrées de mutation Bigtable.
- Écrire ces entrées dans votre table Bigtable
Ce document décrit le connecteur Flink Bigtable et ce que vous devez savoir avant de l'utiliser. Avant de lire ce document, vous devez connaître Apache Flink, le modèle de stockage Bigtable et les écritures Bigtable.
Pour utiliser le connecteur, vous devez disposer d'une table Bigtable préexistante qui servira de récepteur de données. Vous devez créer les familles de colonnes de la table avant de démarrer le pipeline. Vous ne pouvez pas les créer lors de l'écriture. Pour en savoir plus, consultez Créer et gérer des tables.
Le connecteur est compatible avec Apache Flink version 2.1.0 et est disponible sur GitHub. Pour savoir comment installer le connecteur, consultez le dépôt Flink Bigtable Connector. Pour obtenir des exemples de code montrant comment utiliser le connecteur, consultez le répertoire flink-examples-gcp-bigtable.
Sérialiseurs
Le connecteur Flink comporte trois sérialiseurs intégrés que vous pouvez utiliser pour convertir les données en entrées de mutation Bigtable :
GenericRecordToRowMutationSerializer: pour les objets AVROGenericRecordRowDataToRowMutationSerializer: pour les objets FlinkRowDataFunctionRowMutationSerializer: pour une logique de sérialisation personnalisée à l'aide d'une fonction fournie
Vous pouvez également choisir de créer votre propre sérialiseur personnalisé en héritant de BaseRowMutationSerializer.
Modes de sérialisation
Lorsque vous utilisez le connecteur Flink, vous choisissez l'un des deux modes de sérialisation. Le mode spécifie la manière dont vos données sources sont sérialisées en entrées de mutation qui sont écrites dans les familles de colonnes de votre table Bigtable. Vous devez utiliser l'un ou l'autre de ces modes.
Mode de la famille de colonnes
En mode "Famille de colonnes", toutes les données sont écrites dans une seule famille de colonnes spécifiée. Les champs imbriqués ne sont pas acceptés.
Mode Lignes imbriquées
En mode "Lignes imbriquées", chaque champ de premier niveau représente une famille de colonnes. La valeur du champ de premier niveau (RowKeyField) est un autre champ. La valeur de ce champ comporte un objet de ligne pour chaque colonne de la famille de colonnes Bigtable. En mode lignes imbriquées, tous les champs, à l'exception de celui de premier niveau, doivent être des objets de ligne. Les lignes à double imbrication ne sont pas acceptées.
Options de configuration
Pour configurer les performances et le comportement du connecteur, vous pouvez utiliser plusieurs options. Pour en savoir plus sur ces options, consultez la documentation du connecteur sur GitHub.
Traitement de type "exactement une fois"
Dans Apache Flink, exactement une fois signifie que chaque enregistrement de données d'un flux est traité exactement une fois, ce qui évite tout traitement en double ou perte de données, même en cas de défaillance du système.
Une mutation mutateRow Bigtable est idempotente par défaut. Par conséquent, une requête d'écriture qui comporte la même clé de ligne, la même famille de colonnes, la même colonne, le même code temporel et la même valeur ne crée pas de cellule, même si elle est réessayée. Lorsque vous utilisez Bigtable comme récepteur de données pour un framework Apache Flink, vous obtenez automatiquement un comportement "exactement une fois", à condition que les conditions suivantes soient remplies :
- Vous ne définissez pas l'horodatage pour utiliser l'horodatage côté serveur (
-1) dans les nouvelles tentatives. - Le reste de votre pipeline répond aux exigences de type "exactement une fois".
Pour en savoir plus sur la sémantique de type "exactement une fois", consultez Présentation du traitement de bout en bout de type "exactement une fois" dans Apache Flink.
Étapes suivantes
- Connecteur Bigtable Beam
- Connecteur récepteur Bigtable Kafka Connect
- Intégrations avec Bigtable
- Documentation de référence de l'API Datastream