Serveur d'impression

Suivi de ce que les gens tweetent pendant la pandémie de COVID-19 (avec Apache Kafka) – Serveur d’impression

Le 14 avril 2020

Pablo Mujica
Image de Sara Kurfeß @stereophototyp

Il y a quelque temps, je cherchais avec quelles nouvelles technologies Big Data je pouvais apprendre et créer un projet simple et cool.

Celui qui a attiré mon attention était Apache Kafka, une plate-forme open source qui en fait un moyen incroyablement facile de déplacer et d'ingérer une grande quantité de données dans plusieurs plates-formes ou applications. Des entreprises comme LinkedIn, Yelp et Pinterest tous utilisent Kafka dans les plates-formes pour gérer l'énorme quantité de données générées par les utilisateurs.

Christian Posta a mieux expliqué Apache Kafka et son importance que je n'aurais jamais pu, donc si vous êtes curieux, je vous suggère de lire son article ici.

Passer de 0 connaissance des plateformes big data à un cas d'utilisation pratique m'a pris un peu plus de 4 semaines d'essais et d'erreurs, et la lecture d'innombrables pages de documentation. Mais avec le recul, cela m'a beaucoup appris sur la façon dont l'analyse en temps réel, les pipelines de données et la consommation parallèle.

J'ai pensé qu'un bon moyen de tester l'utilisabilité de Kafka et d'apprendre à manipuler un flux de données est de travailler avec un compte de développeur Twitter. Je voulais accomplir trois choses simples avec ce projet:

  1. Connectez-vous à l'API de Twitter et recherchez les tweets mentionnant le virus COVID-19.
  2. Diffusez et consommez les données à l'aide de Kafka et voyez quels hashtags sont les plus populaires.
  3. Visualisez les données dans une application simple.

La toute première étape consiste à demander un compte développeur pour utiliser l'API Twitter. De cette façon, je serais en mesure de trouver des tweets relatifs au coronavirus dans un cadre en temps réel. Après avoir reçu le compte et l'avoir configuré, j'ai écrit un simple script python pour écouter les tweets et utiliser Kafka pour transmettre les données d'une application.

Ici, j'utilise le package tweepy pour me connecter à Twitter en utilisant mes propres informations d'identification. La magie opère réellement dans trois lignes de code distinctes:

producteur = KafkaProducer (bootstrap_servers = 'localhost: 9092')

KafkaProducer se connecte à un serveur déjà en cours d'exécution et ouvre une connexion sur localhost: 9092. Un producteur Kafka traitera ensuite toutes les données provenant de Twitter et les servira à une application

stream.filter (track =["corona virus","COVID-19","pandemic"])

Cela filtre littéralement une collection de tweets en temps réel pour trouver des publications contenant trois mots clés.

producteur.send ("corona_virus", raw_data.encode ('utf-8'))

Enfin, nous créons ici un sujet Kafka appelé «coronavirus» et lui permettons d'envoyer les tweets filtrés. Considérez un sujet Kafka comme une étiquette que nous utilisons pour identifier un flux de données.

Avec notre producteur Kafka prêt à envoyer des tweets liés à COVID, nous devons utiliser une interface connue sous le nom de producteur Kafka pour… eh bien… consommer les données!

Voici la partie de l'application qui consomme les données

Le consommateur Kafka est abonné au sujet que nous avons créé précédemment, mettant les tweets à notre disposition.

Ensuite, pour chaque message que nous recevons du producteur, nous utilisons une fonction pour nettoyer les données de son format de type JSON dans une structure plus gérable.

Si nous devions ajouter imprimer (twitter_message) lignes 24-25, nous pouvons voir beaucoup de données arriver!

Enfin, le fonction update_hashtag_count fait deux choses importantes:

  1. Vérifier si les hashtags dans une certaine publication existent dans notre base de données.
  2. S'ils existent, mettez à jour leur compteur par 1. Sinon, entrez le hashtag dans notre base de données avec un compteur de 1.

À ce stade, il ne nous reste plus qu'à interroger les données de notre base de données et à les visualiser. Pour les besoins de ce projet, j'ai choisi d'utiliser Flask (un framework web) et Plotly (une bibliothèque graphique) pour deux raisons principales: ils sont très légers et faciles à configurer.

En bref, cette application de flacon crée à la fois un tableau de données qui produira tous les hashtags stockés dans notre base de données et crée un graphique à barres très simple avec les 10 hashtags les plus populaires.

Lorsque nous exécuterons enfin l'application, notre application sera en ligne à http://127.0.0.1:5000/

Parmi près de 5000 hashtags, #HermandadEnVanguardia est le plus populaire.

Aaaaand ça! J'ai vraiment eu beaucoup de plaisir à essayer de comprendre les caprices d'Apache Kafka et des technologies similaires pour faire fonctionner ce petit projet. Si je devais (ou vous) travailler plus avant, je chercherais une nouvelle API Kafka appelée Kafka Stream qui récupère à la fois le modèle du producteur et celui du consommateur pour une implémentation plus succincte.

Tout le code utilisé dans cette application se trouve dans ce repo Github.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.