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-kafkaLä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-biblioteketfrå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-biblioteketfrå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.pyFö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.pyUtgå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-biblioteketfrå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-biblioteketfrå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.pySkriptet 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.pyFö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.