[英]How to programmatically get latest offset per Kafka topic partition in Python
[英]How to programmatically create a topic in Apache Kafka using Python
到目前為止,我還沒有看到 python 客戶端在不使用配置選項自動創建主題的情況下顯式實現主題的創建。
您可以使用kafka-python
或confluent_kafka
客戶端以編程方式創建主題,后者是librdkafka的輕量級包裝器。
from kafka.admin import KafkaAdminClient, NewTopic
admin_client = KafkaAdminClient(
bootstrap_servers="localhost:9092",
client_id='test'
)
topic_list = []
topic_list.append(NewTopic(name="example_topic", num_partitions=1, replication_factor=1))
admin_client.create_topics(new_topics=topic_list, validate_only=False)
from confluent_kafka.admin import AdminClient, NewTopic
admin_client = AdminClient({
"bootstrap.servers": "localhost:9092"
})
topic_list = []
topic_list.append(NewTopic("example_topic", 1, 1))
admin_client.create_topics(topic_list)
如果可以運行confluent_kafka
(Python) v0.11.6
或以上版本,那么下面是如何create kafka topics
、 list kafka topics
和delete kafka topics
:
>>> import confluent_kafka.admin, pprint
>>> conf = {'bootstrap.servers': 'broker01:9092'}
>>> kafka_admin = confluent_kafka.admin.AdminClient(conf)
>>> new_topic = confluent_kafka.admin.NewTopic('topic100', 1, 1)
# Number-of-partitions = 1
# Number-of-replicas = 1
>>> kafka_admin.create_topics([new_topic,]) # CREATE (a list(), so you can create multiple).
{'topic100': <Future at 0x7f524b0f1240 state=running>} # Stdout from above command.
>>> pprint.pprint(kafka_admin.list_topics().topics) # LIST
{'topic100' : TopicMetadata(topic100, 1 partitions),
'topic99' : TopicMetadata(topic99, 1 partitions),
'topic98' : TopicMetadata(topic98, 1 partitions)}
要使用相同的kafka_admin
對象delete kafka topics
,請執行以下操作:
kafka_admin.delete_topics(['topic99', 'topic100',]) # DELETE
我希望這有幫助。 \\(◠﹏◠)/
看起來您可以使用以下內容來確保您的主題已經存在(我假設您正在使用以下kafka python實現):
client = KafkaClient(...)
producer = KafkaProducer(...)
client.ensure_topic_exists('my_new_topic')
producer.send_messages('my_new_topic', ...)
好像沒有kafka server api來創建topic所以得用topic自動創建或者命令行工具:
bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic test
已經太晚了。 我不知道用於顯式創建主題的命令,但以下命令會創建並添加消息。
我創建了一個 python kafka 生產者:
prod = KafkaProducer(bootstrap_servers='localhost:9092')
for i in xrange(1000):
prod.send('xyz', str(i))
在 Kafka 主題列表中, xyz
以前不存在。 當我執行上述方法時,Python-kafka 客戶端創建了它並將消息添加到其中。
進行編程主題創建和配置所需的 AdminClient API 剛剛添加到 Kafka 0.11(最初用於 Java)
隨着時間的推移,預計非 Java 客戶端庫也將添加此功能。 與您正在使用的 Kafka Python 客戶端(有多個)的作者聯系,以查看是否以及何時在 API 中提供 KIP-4 管理協議支持
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
topic = 'topic-name'
producer.send(topic, final_list[0]).get(timeout=10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.