Apache Kafka

Sådan læses data fra Kafka med Python

Sådan læses data fra Kafka med Python
Kafka er et open source distribueret messaging system til at sende beskeden i partitionerede og forskellige emner. Real-time datastreaming kan implementeres ved hjælp af Kafka til at modtage data mellem applikationerne. Det har tre hoveddele. Disse er producenter, forbrugere og emner. Producenten bruges til at sende en besked til et bestemt emne, og hver besked vedhæftes med en nøgle. Forbrugeren bruges til at læse en besked om et bestemt emne fra sæt af partitioner. Data modtaget fra producenten og gemt på partitionerne baseret på et bestemt emne. Der findes mange biblioteker i python for at skabe producent og forbruger til at opbygge et messaging-system ved hjælp af Kafka. Hvordan dataene fra Kafka kan læses ved hjælp af python vises i denne vejledning.

Forudsætning

Du skal installere det nødvendige pythonbibliotek for at læse data fra Kafka. Python3 bruges i denne tutorial til at skrive scriptet fra forbruger og producent. Hvis pip-pakken ikke er installeret før i dit Linux-operativsystem, skal du installere pip, før du installerer Kafka-biblioteket til python. python3-kafka bruges i denne vejledning til at læse data fra Kafka. Kør følgende kommando for at installere biblioteket.

$ pip installerer python3-kafka

Læsning af enkle tekstdata fra Kafka

Forskellige typer data kan sendes fra producenten om et bestemt emne, der kan læses af forbrugeren. Hvordan en simpel tekstdata kan sendes og modtages fra Kafka ved hjælp af producent og forbruger, vises i denne del af denne vejledning.

Opret en fil med navnet producent1.py med følgende python-script. KafkaProducer modulet importeres fra Kafka-biblioteket. Mæglerlisten skal definere på tidspunktet for initialisering af producentobjekt for at oprette forbindelse til Kafka-serveren. Standardhavnen til Kafka er '9092''. bootstrap_servers argument bruges til at definere værtsnavnet med porten. ''Første_emne'er angivet som et emnenavn, hvormed tekstbesked sendes fra producenten. Dernæst en simpel tekstbesked, 'Hej fra Kafkasendes vha sende() metode til KafkaProducer til emnet, 'Første_emne''.

producent1.py:

# Importer KafkaProducer fra Kafka-biblioteket
fra kafka import KafkaProducer
# Definer server med port
bootstrap_servers = ['localhost: 9092']
# Definer emnets navn, hvor meddelelsen skal offentliggøres
topicName = 'First_Topic'
# Initialiser producentvariabel
producer = KafkaProducer (bootstrap_servers = bootstrap_servers)
# Udgiv tekst i defineret emne
producent.send (topicName, b'Hello from kafka ... ')
# Udskriv besked
print ("Besked sendt")

Opret en fil med navnet forbruger1.py med følgende python-script. KafkaConsumer modulet importeres fra Kafka-biblioteket for at læse data fra Kafka. sys modul bruges her til at afslutte scriptet. Det samme værtsnavn og portnummer på producenten bruges i forbrugerens script til at læse data fra Kafka. Emnets navn på forbrugeren og producenten skal være det samme som 'Første_emne''.  Dernæst initialiseres forbrugerobjektet med de tre argumenter. Emne navn, gruppe-id og serveroplysninger. til loop bruges her til at læse teksten sendt fra Kafka producent.

forbruger1.py:

# Importer KafkaConsumer fra Kafka-biblioteket
fra kafka import KafkaConsumer
# Importer sys-modul
importer sys
# Definer server med port
bootstrap_servers = ['localhost: 9092']
# Definer emnets navn, hvorfra meddelelsen modtages
topicName = 'First_Topic'
# Initialiser forbrugervariabel
forbruger = KafkaConsumer (topicName, group_id = 'group1', bootstrap_servers =
bootstrap_servers)
# Læs og udskriv besked fra forbruger
til msg i forbruger:
print ("Emne Navn =% s, Besked =% s"% (msg.emne, msg.værdi))
# Afslut scriptet
sys.Afslut()

Produktion:

Kør følgende kommando fra en terminal for at udføre producentscriptet.

$ python3 producent1.py

Følgende output vises efter afsendelse af meddelelsen.

Kør følgende kommando fra en anden terminal for at udføre forbrugerscriptet.

$ python3 forbruger1.py

Outputtet viser emnets navn og tekstbeskeden sendt fra producenten.

Læsning af JSON-formaterede data fra Kafka

JSON-formaterede data kan sendes af Kafka-producenten og læses af Kafka-forbruger ved hjælp af jsonen modul af python. Hvordan JSON-data kan serieiseres og de-serialiseres inden afsendelse og modtagelse af data ved hjælp af python-kafka-modulet, vises i denne del af denne vejledning.

Opret et python-script med navnet producent2.py med følgende script. Et andet modul ved navn JSON importeres med KafkaProducer modul her. værdi_serializer argument bruges med bootstrap_servers argument her for at initialisere objektet fra Kafka-producenten. Dette argument indikerer, at JSON-data vil blive kodet ved hjælp af 'utf-8'tegnsæt på afsendelsestidspunktet. Derefter sendes JSON-formaterede data til det navngivne emne JSONtopic.

producent2.py:

# Importer KafkaProducer fra Kafka-biblioteket
fra kafka import KafkaProducer
# Importer JSON-modul til at serialisere data
import json
# Initialiser producentvariabel og indstil parameter til JSON-kode
producer = KafkaProducer (bootstrap_servers =
['localhost: 9092'], value_serializer = lambda v: json.lossepladser (v).kode ('utf-8'))
# Send data i JSON-format
producent.send ('JSONtopic', 'name': 'fahmida', 'email': '[email protected]')
 
# Udskriv besked
print ("Besked sendt til JSONtopic")

Opret et python-script med navnet forbruger2.py med følgende script. KafkaConsumer, sys og JSON-moduler importeres i dette script. KafkaConsumer modulet bruges til at læse JSON-formaterede data fra Kafka. JSON-modulet bruges til at afkode de kodede JSON-data, der sendes fra Kafka-producenten. Sys modul bruges til at afslutte scriptet. værdi_deserializer argument bruges med bootstrap_servers for at definere, hvordan JSON-data dekodes. Næste, til loop bruges til at udskrive alle forbrugeroptegnelser og JSON-data hentet fra Kafka.

forbruger2.py:

# Importer KafkaConsumer fra Kafka-biblioteket
fra kafka import KafkaConsumer
# Importer sys-modul
importer sys
# Importer json-modul til at serialisere data
import json
# Initialiser forbrugervariabel og indstil ejendom til JSON-afkodning
forbruger = KafkaConsumer ('JSONtopic', bootstrap_servers = ['localhost: 9092'],
værdi_deserializer = lambda m: json.belastninger (m.afkode ('utf-8')))
# Læs data fra kafka
til besked i forbrugeren:
print ("Forbrugeroptegnelser: \ n")
udskrive (besked)
udskriv ("\ nLæser fra JSON-data \ n")
print ("Navn:", besked [6] ['navn'])
print ("E-mail:", besked [6] ['email'])
# Afslut scriptet
sys.Afslut()

Produktion:

Kør følgende kommando fra en terminal for at udføre producentscriptet.

$ python3 producent2.py

Scriptet udskriver følgende meddelelse efter afsendelse af JSON-data.

Kør følgende kommando fra en anden terminal for at udføre forbrugerscriptet.

$ python3 forbruger2.py

Følgende output vises efter kørsel af scriptet.

Konklusion:

Dataene kan sendes og modtages i forskellige formater fra Kafka ved hjælp af python. Dataene kan også gemmes i databasen og hentes fra databasen ved hjælp af Kafka og python. Jeg er hjemme, denne tutorial hjælper pythonbrugeren med at begynde at arbejde med Kafka.

Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...
OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...
OpenTTD Tutorial
OpenTTD er et af de mest populære forretningssimuleringsspil derude. I dette spil skal du oprette en vidunderlig transportvirksomhed. Du starter dog i...