Возникли проблемы с получением сообщений от Кафки. ⇐ Python

Программы на Python
Anonymous
Возникли проблемы с получением сообщений от Кафки.

Сообщение Anonymous »

Я запустил своего брокера и Zookeeper внутри докера. Я начал создавать сообщения локально в своем pycharm, используя свой localhost:9092. Я мог видеть, как мой брокер печатает сообщения внутри докера. Когда я пытаюсь использовать эти сообщения в Databricks, появляется длинное сообщение «Инициализация потока...», и оно внезапно останавливается. Пожалуйста, помогите мне решить эту проблему.
Продюсер

Код: Выделить всё

from kafka import KafkaProducer
import json
from data import get_users
import time

def json_serializer(data):
return json.dumps(data).encode("utf-8")
def get_partition(key , all , available):
return 0
producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
value_serializer=json_serializer,
partitioner = get_partition)
if __name__ == "__main__":
while True:
registered_user = get_users()
print(registered_user)
producer.send("kafka_topstream", registered_user)
time.sleep(40)
Создание Docker:

Код: Выделить всё

version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.4.0
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
healthcheck:
test: ['CMD', 'bash', '-c', "echo 'ruok' | nc localhost 2181"]
interval: 10s
timeout: 5s
retries: 5
networks:
- myfirststream

broker:
image: confluentinc/cp-server:7.4.0
hostname: broker
container_name: broker
depends_on:
zookeeper:
condition: service_healthy
ports:
- "9092:9092"
- "9101:9101"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9101
KAFKA_JMX_HOSTNAME: localhost
KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL: http://schema-registry:8081
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
CONFLUENT_METRICS_ENABLE: 'false'
CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous'
networks:
- myfirststream
healthcheck:
test: [ "CMD", "bash", "-c", 'nc -z localhost 9092' ]
interval: 10s
timeout: 5s
retries: 5

networks:
myfirststream:
databricks
Я пытаюсь употреблять сообщение, используя этот DataFrame (мне нужно использовать - '172.18..0.3: 9092'?)

Код: Выделить всё

df = spark \
.readStream \
.format("kafka") \
.option("kafka.bootstrap.servers", "localhost:9092") \
.option("subscribe", "kafka_topstream") \
.load()
Я пытался изменить IP-адреса. Моя Kafka создает сообщения внутри докера, но я пытаюсь использовать их снаружи (блоки данных). Пожалуйста, посоветуйте мне решить эту проблему

Подробнее здесь: https://stackoverflow.com/questions/790 ... from-kafka

Вернуться в «Python»