Apache Kafka

Hur man läser data från Kafka med Python

Hur man läser data från Kafka med Python
Kafka är ett open source-distribuerat meddelandesystem för att skicka meddelandet i partitionerade och olika ämnen. Realtids datastreaming kan implementeras genom att använda Kafka för att ta emot data mellan applikationerna. Den har tre huvuddelar. Dessa är producenter, konsumenter och ämnen. Producenten används för att skicka ett meddelande till ett visst ämne och varje meddelande bifogas med en nyckel. Konsumenten används för att läsa ett meddelande om ett visst ämne från uppsättningen partitioner. Data som tagits emot från producenten och lagras på partitionerna baserat på ett visst ämne. Många bibliotek finns i python för att skapa producent och konsument för att bygga ett meddelandesystem med Kafka. Hur data från Kafka kan läsas med hjälp av python visas i denna handledning.

Nödvändig förutsättning

Du måste installera det nödvändiga pythonbiblioteket för att läsa data från Kafka. Python3 används i denna handledning för att skriva manus för konsument och producent. Om pip-paketet inte har installerats tidigare i ditt Linux-operativsystem måste du installera pip innan du installerar Kafka-biblioteket för python. python3-kafka används i denna handledning för att läsa data från Kafka. Kör följande kommando för att installera biblioteket.

$ pip installera python3-kafka

Läser enkel textdata från Kafka

Olika typer av data kan skickas från producenten om ett visst ämne som kan läsas av konsumenten. Hur en enkel textinformation kan skickas och tas emot från Kafka med producent och konsument visas i denna del av denna handledning.

Skapa en fil med namnet producent1.py med följande python-skript. KafkaProducer modulen importeras från Kafka-biblioteket. Mäklarlistan måste definiera vid initialisering av producentobjekt för att ansluta till Kafka-servern. Standardporten för Kafka är '9092''. bootstrap_servers argument används för att definiera värdnamnet med porten. ''First_Topic'ställs in som ett ämnesnamn med vilket textmeddelande kommer att skickas från producenten. Därefter ett enkelt textmeddelande, 'Hej från Kafkaskickas med skicka() metod av KafkaProducer till ämnet, 'First_Topic''.

producent1.py:

# Importera KafkaProducer från Kafka-biblioteket
från kafka import KafkaProducer
# Definiera server med port
bootstrap_servers = ['localhost: 9092']
# Definiera ämnesnamnet där meddelandet ska publiceras
topicName = 'First_Topic'
# Initiera producentvariabel
producent = KafkaProducer (bootstrap_servers = bootstrap_servers)
# Publicera text i definierat ämne
producent.skicka (topicName, b'Hej från kafka ... ')
# Skriv ut meddelande
skriv ut ("Meddelande skickat")

Skapa en fil med namnet konsument1.py med följande python-skript. KafkaConsumer modulen importeras från Kafka-biblioteket för att läsa data från Kafka. sys modulen används här för att avsluta skriptet. Samma värdnamn och portnummer för tillverkaren används i konsumentens manus för att läsa data från Kafka. Ämnesnamnet för konsumenten och producenten måste vara samma som 'First_topic''.  Därefter initialiseras konsumentobjektet med de tre argumenten. Ämnesnamn, grupp-id och serverinformation. för loop används här för att läsa texten från Kafka-producenten.

konsument1.py:

# Importera KafkaConsumer från Kafka-biblioteket
från kafka import KafkaConsumer
# Importera sys-modul
importera sys
# Definiera server med port
bootstrap_servers = ['localhost: 9092']
# Definiera ämnesnamnet varifrån meddelandet kommer att tas emot
topicName = 'First_Topic'
# Initiera konsumentvariabel
konsument = KafkaConsumer (topicName, group_id = 'group1', bootstrap_servers =
bootstrap_servers)
# Läs och skriv ut meddelande från konsumenten
för msg i konsument:
skriv ut ("Ämnesnamn =% s, meddelande =% s"% (msg.ämne, msg.värde))
# Avsluta skriptet
sys.utgång()

Produktion:

Kör följande kommando från en terminal för att köra producentskriptet.

$ python3-producent1.py

Följande utdata visas efter att meddelandet har skickats.

Kör följande kommando från en annan terminal för att utföra konsumentskriptet.

$ python3 konsument1.py

Utgången visar ämnesnamnet och textmeddelandet skickat från producenten.

Läser JSON-formaterad data från Kafka

JSON-formaterad data kan skickas av Kafka-producenten och läsas av Kafka-konsumenten med hjälp av json modul av python. Hur JSON-data kan serieiseras och avserialiseras innan data skickas och tas emot med hjälp av python-kafka-modulen visas i denna del av denna handledning.

Skapa ett python-skript med namnet producent2.py med följande skript. En annan modul med namnet JSON importeras med KafkaProducer här. value_serializer argument används med bootstrap_servers argument här för att initialisera objektet från Kafka-producenten. Detta argument indikerar att JSON-data kommer att kodas med 'utf-8teckenuppsättning vid sändningstidpunkten. Därefter skickas JSON-formaterad data till namnet JSONtopic.

producent2.py:

# Importera KafkaProducer från Kafka-biblioteket
från kafka import KafkaProducer
# Importera JSON-modulen för att serialisera data
importera json
# Initiera producentvariabel och ställ in parameter för JSON-kod
producent = KafkaProducer (bootstrap_servers =
['localhost: 9092'], value_serializer = lambda v: json.dumpar (v).koda ('utf-8'))
# Skicka data i JSON-format
producent.skicka ('JSONtopic', 'name': 'fahmida', 'email': '[email protected]')
 
# Skriv ut meddelande
skriv ut ("Meddelande skickat till JSONtopic")

Skapa ett python-skript med namnet konsument2.py med följande skript. KafkaConsumer, sys och JSON-moduler importeras i detta skript. KafkaConsumer modulen används för att läsa JSON-formaterad data från Kafka. JSON-modulen används för att avkoda den kodade JSON-data som skickas från Kafka-producenten. Sys modulen används för att avsluta skriptet. value_deserializer argument används med bootstrap_servers för att definiera hur JSON-data kommer att avkodas. Nästa, för loop används för att skriva ut alla konsumentposter och JSON-data som hämtats från Kafka.

konsument2.py:

# Importera KafkaConsumer från Kafka-biblioteket
från kafka import KafkaConsumer
# Importera sys-modul
importera sys
# Importera json-modulen för att serialisera data
importera json
# Initiera konsumentvariabel och ställ in egenskap för JSON-avkodning
konsument = KafkaConsumer ('JSONtopic', bootstrap_servers = ['localhost: 9092'],
value_deserializer = lambda m: json.laster (m.avkoda ('utf-8')))
# Läs data från kafka
för meddelande hos konsument:
print ("Consumer records: \ n")
skriv ut (meddelande)
skriva ut ("\ nLäs från JSON-data \ n")
skriv ut ("Namn:", meddelande [6] ['namn'])
skriv ut ("E-post:", meddelande [6] ["e-post"])
# Avsluta skriptet
sys.utgång()

Produktion:

Kör följande kommando från en terminal för att köra producentskriptet.

$ python3 producent2.py

Skriptet skriver ut följande meddelande efter att JSON-data har skickats.

Kör följande kommando från en annan terminal för att utföra konsumentskriptet.

$ python3 konsument2.py

Följande utdata visas efter körning av skriptet.

Slutsats:

Uppgifterna kan skickas och tas emot i olika format från Kafka med hjälp av python. Data kan också lagras i databasen och hämtas från databasen med Kafka och python. Jag är hemma, den här guiden hjälper pythonanvändaren att börja arbeta med Kafka.

OpenTTD-handledning
OpenTTD är ett av de mest populära affärssimuleringsspelen där ute. I det här spelet måste du skapa en underbar transportaffär. Du kommer dock att bör...
SuperTuxKart för Linux
SuperTuxKart är en fantastisk titel som är utformad för att ge dig Mario Kart-upplevelsen gratis på ditt Linux-system. Det är ganska utmanande och rol...
Battle for Wesnoth Tutorial
Slaget om Wesnoth är ett av de mest populära open source-strategispel som du kan spela just nu. Det här spelet har inte bara utvecklats under mycket l...