如果 Apache Beam WriteToKafka 未将记录写入 Kafka 主题,您可以尝试以下步骤来诊断问题:
确认 Kafka 服务正在运行,并且您的代码可以连接到 Kafka。
检查主题是否存在。如果主题不存在,则您需要先创建它。您可以通过在 Kafka 控制台或使用 Kafka python 客户端创建主题,如下所示:
from kafka.admin import KafkaAdminClient, NewTopic
admin_client = KafkaAdminClient(bootstrap_servers="localhost:9092")
topic_list = []
topic_list.append(NewTopic(name="my_topic", num_partitions=1, replication_factor=1))
admin_client.create_topics(new_topics=topic_list, validate_only=False)
from apache_beam.io.kafka import WriteToKafka
# Writing to Kafka topics
with beam.Pipeline() as pipeline:
(pipeline
| 'Create' >> beam.Create(["Hello", "World"])
| 'Write' >> WriteToKafka(
topic='my_topic',
producer_config={'bootstrap.servers': 'localhost:9092'})
)
请注意,在上面的示例中,我们指定了主题名称为“my_topic”,并将生产者属性传递给“producer_config”参数。
from kafka import KafkaConsumer
# Consuming records from Kafka topics
consumer = KafkaConsumer(
'my_topic',
bootstrap_servers=['localhost:9092'],
auto_offset_reset='earliest',
enable_auto_commit=True,
group_id='my-group',
value_deserializer=lambda x: x.decode('utf-8'))
for message in consumer:
print(message.value)
如果仍然无法确定问题