Python JSON列作为kafka producer中的键
正如我们所知,我们可以使用kafka producer发送一个密钥,该密钥在内部进行散列,以找到主题数据中的哪个分区。 我有一个生产者,在那里我以JSON格式发送数据Python JSON列作为kafka producer中的键,python,apache-kafka,kafka-producer-api,confluent-platform,Python,Apache Kafka,Kafka Producer Api,Confluent Platform,正如我们所知,我们可以使用kafka producer发送一个密钥,该密钥在内部进行散列,以找到主题数据中的哪个分区。 我有一个生产者,在那里我以JSON格式发送数据 kafka-console-producer --broker-list 127.0.0.1:9092 --topic USERPROFILE << EOF {"user_id" : 100, "firstname":"Punit","lastname":"Gupta", "countrycode":"IN", "r
kafka-console-producer --broker-list 127.0.0.1:9092 --topic USERPROFILE << EOF
{"user_id" : 100, "firstname":"Punit","lastname":"Gupta", "countrycode":"IN", "rating":4.9 }
{"user_id" : 101, "firstname":"eli","lastname":"eli", "countrycode":"GB", "rating":3.0 }
EOF
但是在发送JSON sata时如何执行
我正在使用confluent针对Kafka的python API。如果有什么东西需要我根据函数的类别来编写,我将非常感激,如果你能用python来描述的话。JSON只是一个字符串。控制台生产者不解析JSON,只有Avro控制台生产者解析JSON 我会避免使用
key.separator=:
,因为JSON包含:
。您可以使用|
字符,然后只需键入即可
countrycode|{"your":"data"}
在Python中。您可以像这样解析数据,以便提取键的值
key = 'countrycode'
records = [{"user_id" : 100, "firstname":"Punit","lastname":"Gupta", key:"IN", "rating":4.9 },
{"user_id" : 101, "firstname":"eli","lastname":"eli", key:"GB", "rating":3.0 }
]
import json
for r in records:
producer.produce('topic', key=r[key], value=json.dumps(r))
# first record will send a record containing ('IN', { ... 'countrycode':'IN'})
你能给我一个例子,从我的生产者上面。你需要复制数据从价值到关键。在控制台生成器中生成JSON时,如果没有一些额外的bash函数,您无法解析JSON,但如果我使用cpu生成数据,这将使kafka的整个用途无效,对吗?我不确定我是否理解这个问题。。。无论发生什么,您都在使用CPU。您的生产者不应该与代理运行在同一台机器上,因此CPU在真实场景中会有所不同。。。我还是不确定我是否明白你的意思。但是如果您想使用它,那么您可以生成一个没有键的主题,然后在将数据写入连接接收器之前使用Connect将字段提取到键。
key = 'countrycode'
records = [{"user_id" : 100, "firstname":"Punit","lastname":"Gupta", key:"IN", "rating":4.9 },
{"user_id" : 101, "firstname":"eli","lastname":"eli", key:"GB", "rating":3.0 }
]
import json
for r in records:
producer.produce('topic', key=r[key], value=json.dumps(r))
# first record will send a record containing ('IN', { ... 'countrycode':'IN'})