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-kafkaLæ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-biblioteketfra 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-biblioteketfra 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.pyFølgende output vises efter afsendelse af meddelelsen.
Kør følgende kommando fra en anden terminal for at udføre forbrugerscriptet.
$ python3 forbruger1.pyOutputtet 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-biblioteketfra 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-biblioteketfra 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.pyScriptet 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.pyFø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.