Kafka et Avro dans un Job - 7.3

Kafka

Version
7.3
Language
Français
Product
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Open Studio for Big Data
Talend Real-Time Big Data Platform
Module
Studio Talend
Content
Création et développement > Systèmes tiers > Composants Messaging (Intégration) > Composants Kafka
Gouvernance de données > Systèmes tiers > Composants Messaging (Intégration) > Composants Kafka
Qualité et préparation de données > Systèmes tiers > Composants Messaging (Intégration) > Composants Kafka
Dans un Job Talend, les composants Kafka (les composants classiques Kafka) et les composants Kafka pour Avro gèrent les données Avro différemment, comme reflété dans les approches qu'Avro fournit pour (dé)sérialiser les données au format Avro.
  • Les composants Kafka classiques lisent et écrivent le format JSON uniquement. Donc, si votre Kafka produit ou consomme des données Avro et que pour une raison ou pour une autre, les composants Kafka pour Avro ne sont pas disponibles, vous devez utiliser une bibliothèque d'outils Avro pour convertir vos données entre Avro et JSON à l'extérieur de votre Job.
    Par exemple,
    java -jar C:\2_Prod\Avro\avro-tools-1.8.2.jar tojson out.avro
    Vous pouvez télécharger la bibliothèque avro-tools-1.8.2.jar utilisée dans cet exemple, à partir de MVN Repository. Cette commande convertit le fichier out.avro en JSON.
    Ou :
    java -jar avro-tools-1.8.2.jar fromjson --schema-file twitter.avsc twitter.json > twitter.avro
    Cette commande convertit le fichier twitter.json en twitter.avro à l'aide d'un schéma de twitter.avsc.
  • Les composants Kafka pour Avro sont disponibles dans l'infrastructure Spark uniquement : ils gèrent les données directement dans le format Avro. Si votre cluster Kafka produit et consomme des données Avro, utilisez tKafkaInputAvro pour lire les données directement de Kafka et tWriteAvroFields pour envoyer des données Avro à tKafkaOutput.

    Cependant, ces composants ne gèrent pas les données Avro créées par une bibliothèque d'outils Avro, car les bibliothèques d'outils Avro et les composants pour Avro n'utilisent pas la même approche fournie par Avro.

Les deux approches qu'Avro fournit pour (dé)sérialiser les données du format Avro sont les suivantes :
  1. Les fichiers Avro sont générés avec le schéma Avro embarqué dans chaque fichier (via org.apache.avro.file.{DataFileWriter/DataFileReader}). Les bibliothèques d'outils Avro utilise cette approche.
  2. Les enregistrements Avro sont générés sans embarquer le schéma dans chaque enregistrement (via org.apache.avro.io.{BinaryEncoder/BinaryDecoder}). Les composants Kafka pour Avro utilisent cette approche.

    Cette approche est fortement recommandée et privilégiée lorsque les messages Avro d'encodage sont constamment écrits dans un topic Kafka, parce que dans cette approche, aucune charge engagée pour rembarquer le schéma Avro dans chacun des messages. C'est un avantage important par rapport aux autres approches quand Spark Streaming est utilisé pour lire des données depuis ou écrire des données dans Kafka. Étant donné que les enregistrements (messages) sont généralement petits alors que la taille du schéma Avro est relativement importante, le fait d'embarquer le schéma de chaque message n'est pas coûteux.

Les sorties des deux approches ne peuvent pas être mélangées dans le même processus en lecture seule.