Kafka et AVRO dans un Job
- Les composants Kafka classiques lisent et écrivent les formats JSON et Avro. Si votre Kafka produit ou consomme des données Avro, vous pouvez utiliser le tKafkaInput et le tKafkaOutput avec des enregistrements de production et de consommation, ainsi qu'avec le registre de schéma dans votre Job Standard.
- Les composants Kafka du framework Spark gèrent les données directement au format Avro. Si votre cluster Kafka produit et consomme des données Avro, utilisez le tKafkaInputAvro pour lire les données directement depuis Apache Kafka et le tWriteAvroFields pour envoyer des données Avro au 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 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.
- 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.