2017-06-26 1 views
0

J'essaie d'utiliser Spark Streaming et Kafka pour intégrer et traiter les messages reçus d'un serveur Web.Traitement d'un tableau d'octets de messages Kafka dans Scala

Je teste le consommateur mentionné dans https://github.com/dibbhatt/kafka-spark-consumer/blob/master/README.md pour tirer parti des fonctionnalités supplémentaires qu'il offre. Dans un premier temps, j'essaye d'utiliser l'exemple fourni juste pour voir comment ça se joue. Cependant, j'ai des difficultés à voir réellement les données dans la charge utile.

En regardant le résultat de la fonction suivante:

ReceiverLauncher.launch 

je peux voir retourne une collection de RDD, chacun de type:

MessageAndMetadata[Array[Byte]] 

Je suis coincé à ce point et n » Je sais comment analyser cela et voir les données réelles. Tous les exemples sur le Web qui utilisent le consommateur fourni avec Spark créent un objet itérateur, le parcourent et traitent les données. Cependant, l'objet retourné par ce client personnalisé ne me donne aucune interface d'itérateur pour commencer.

Il existe une méthode getPayload() dans le RDD, mais je ne sais pas comment y accéder.

Les questions que j'ai sont:

  1. Est-ce consommateur en fait un bon choix pour un environnement de production? D'après son apparence, les caractéristiques qu'elle offre et l'abstraction qu'elle procure semblent très prometteuses.

  2. Quelqu'un a déjà essayé? Est-ce que quelqu'un sait comment accéder aux données?

Merci à l'avance,

Moe

+0

Il semble que j'ai finalement réussi à le faire fonctionner. J'ai converti le résultat de la fonction getPayload() en String et maintenant je peux imprimer les données réelles. Plus facile que je ne le pensais:) – Moe

+0

Au lieu de regarder dans une autre implémentation de base reçue, vous devriez regarder dans le DirectKafkaConsumer: https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html – maasg

Répondre

-1

getPayload() doit être converti en chaîne, par exemple

new String(line.getPayload())