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-kafkaLesing 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 bibliotekfra 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-biblioteketfra 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.pyFølgende utdata vises etter sending av meldingen.
Kjør følgende kommando fra en annen terminal for å utføre forbruksskriptet.
$ python3 forbruker1.pyProduksjonen 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 bibliotekfra 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-biblioteketfra 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.pySkriptet 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.pyFø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.