Apache Kafka

Hvordan lese data fra Kafka med Python

Hvordan lese data fra Kafka med Python
Kafka er et open source distribuert meldingssystem for å sende meldingen i partisjonerte og forskjellige emner. Sanntids datastreaming kan implementeres ved å bruke Kafka til å motta data mellom applikasjonene. Den har tre hoveddeler. Dette er produsent, forbruker og emner. Produsenten brukes til å sende en melding til et bestemt emne, og hver melding er vedlagt med en nøkkel. Forbrukeren brukes til å lese en melding om et bestemt emne fra settet med partisjoner. Dataene mottatt fra produsenten og lagret på partisjonene basert på et bestemt emne. Det finnes mange biblioteker i python for å skape produsent og forbruker for å bygge et meldingssystem ved hjelp av Kafka. Hvordan dataene fra Kafka kan leses ved hjelp av python, vises i denne veiledningen.

Forutsetning

Du må installere det nødvendige pythonbiblioteket for å lese data fra Kafka. Python3 brukes i denne opplæringen for å skrive manus til forbruker og produsent. Hvis pip-pakken ikke er installert før i Linux-operativsystemet ditt, må du installere pip før du installerer Kafka-biblioteket for python. python3-kafka brukes i denne veiledningen for å lese data fra Kafka. Kjør følgende kommando for å installere biblioteket.

$ pip installer python3-kafka

Lesing av enkle tekstdata fra Kafka

Ulike typer data kan sendes fra produsenten om et bestemt emne som kan leses av forbrukeren. Hvordan en enkel tekstdata kan sendes og mottas fra Kafka ved hjelp av produsent og forbruker, vises i denne delen av denne veiledningen.

Opprett en fil med navnet produsent1.py med følgende python-skript. KafkaProdusent modulen importeres fra Kafka-biblioteket. Meglerlisten må definere på tidspunktet for initialisering av produsentobjekt for å koble til Kafka-serveren. Standardporten til Kafka er '9092'. bootstrap_servers argument brukes til å definere vertsnavnet med porten. 'First_Topic'er angitt som et emnenavn som tekstmelding sendes fra produsenten. Deretter en enkel tekstmelding, 'Hei fra Kafkasendes med sende() Metode av KafkaProdusent til emnet, 'First_Topic'.

produsent1.py:

# Importer KafkaProducer fra Kafka bibliotek
fra kafka import KafkaProducer
# Definer server med port
bootstrap_servers = ['localhost: 9092']
# Definer emnets navn der meldingen skal publiseres
topicName = 'First_Topic'
# Initialiser produsentvariabelen
produsent = KafkaProducer (bootstrap_servers = bootstrap_servers)
# Publiser tekst i definert emne
produsent.send (topicName, b'Hello from kafka ... ')
# Skriv ut melding
skriv ut ("Melding sendt")

Opprett en fil med navnet forbruker1.py med følgende python-skript. KafkaConsumer modulen importeres fra Kafka-biblioteket for å lese data fra Kafka. sys modul brukes her for å avslutte skriptet. Det samme vertsnavnet og portnummeret til produsenten brukes i skriptet til forbrukeren for å lese data fra Kafka. Emnets navn på forbrukeren og produsenten må være det samme som 'Første_tema'.  Deretter initialiseres forbrukerobjektet med de tre argumentene. Temanavn, gruppe-ID og serverinformasjon. til loop brukes her for å lese teksten sendt fra Kafka produsent.

forbruker1.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 der meldingen skal mottas
topicName = 'First_Topic'
# Initialiser forbrukervariabelen
forbruker = KafkaConsumer (topicName, group_id = 'group1', bootstrap_servers =
bootstrap_servers)
# Les og skriv ut melding fra forbruker
for msg i forbruker:
skriv ut ("Emne navn =% s, melding =% s"% (msg.emne, msg.verdi))
# Avslutt skriptet
sys.exit()

Produksjon:

Kjør følgende kommando fra en terminal for å utføre produsentskriptet.

$ python3 produsent1.py

Følgende utdata vises etter sending av meldingen.

Kjør følgende kommando fra en annen terminal for å utføre forbruksskriptet.

$ python3 forbruker1.py

Produksjonen viser emnets navn og tekstmeldingen sendt fra produsenten.

Leser JSON-formaterte data fra Kafka

JSON-formaterte data kan sendes av Kafka-produsenten og leses av Kafka-forbruker ved hjelp av jsonen modul av python. Hvordan JSON-data kan serieiseres og de-serialiseres før du sender og mottar dataene ved hjelp av python-kafka-modulen, vises i denne delen av denne opplæringen.

Lag et pythonscript som heter produsent2.py med følgende manus. En annen modul kalt JSON importeres med KafkaProdusent modul her. value_serializer argument brukes med bootstrap_servers argument her for å initialisere objektet til Kafka-produsenten. Dette argumentet indikerer at JSON-data vil bli kodet ved hjelp av 'utf-8tegnsett på sendingstidspunktet. Deretter sendes JSON-formaterte data til emnet som heter JSONtopic.

produsent2.py:

# Importer KafkaProducer fra Kafka bibliotek
fra kafka import KafkaProducer
# Importer JSON-modul for å serieisere data
importere json
# Initialiser produsentvariabel og sett parameter for JSON-koding
produsent = KafkaProducer (bootstrap_servers =
['localhost: 9092'], value_serializer = lambda v: json.dumper (v).kode ('utf-8'))
# Send data i JSON-format
produsent.send ('JSONtopic', 'name': 'fahmida', 'email': '[email protected]')
 
# Skriv ut melding
skriv ut ("Melding sendt til JSONtopic")

Lag et pythonscript som heter forbruker2.py med følgende manus. KafkaConsumer, sys og JSON-moduler importeres i dette skriptet. KafkaConsumer modulen brukes til å lese JSON-formaterte data fra Kafka. JSON-modulen brukes til å dekode de kodede JSON-dataene som sendes fra Kafka-produsenten. Sys modul brukes til å avslutte skriptet. verdi_deserializer argument brukes med bootstrap_servers for å definere hvordan JSON-data skal dekodes. Neste, til loop brukes til å skrive ut alle forbrukerposter og JSON-data hentet fra Kafka.

forbruker2.py:

# Importer KafkaConsumer fra Kafka-biblioteket
fra kafka import KafkaConsumer
# Importer sys-modul
importer sys
# Importer json-modul for å serieisere data
importere json
# Initialiser forbrukervariabelen og sett eiendom for JSON-dekoding
forbruker = KafkaConsumer ('JSONtopic', bootstrap_servers = ['localhost: 9092'],
verdi_deserializer = lambda m: json.belastninger (m.dekode ('utf-8')))
# Les data fra kafka
for melding i forbruker:
skriv ut ("Forbrukerposter: \ n")
skriv ut (melding)
skriv ut ("\ nLesing fra JSON-data \ n")
skriv ut ("Navn:", melding [6] ['navn'])
skriv ut ("E-post:", melding [6] ['e-post'])
# Avslutt skriptet
sys.exit()

Produksjon:

Kjør følgende kommando fra en terminal for å utføre produsentskriptet.

$ python3 produsent2.py

Skriptet skriver ut følgende melding etter å ha sendt JSON-dataene.

Kjør følgende kommando fra en annen terminal for å utføre forbruksskriptet.

$ python3 forbruker2.py

Følgende utdata vises etter kjøring av skriptet.

Konklusjon:

Dataene kan sendes og mottas i forskjellige formater fra Kafka ved hjelp av python. Dataene kan også lagres i databasen og hentes fra databasen ved hjelp av Kafka og python. Jeg kommer hjem, denne opplæringen vil hjelpe pythonbrukeren å begynne å jobbe med Kafka.

Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...
Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...
Mus Midterste museknapp fungerer ikke i Windows 10
Midterste museknapp fungerer ikke i Windows 10
De midtre museknapp hjelper deg med å bla gjennom lange websider og skjermer med mye data. Hvis det stopper, vil du ende opp med å bruke tastaturet ti...