繁体   English   中英

如何从python客户端将JSON对象发送到kafka

[英]how to send JSON object to kafka from python client

我有一个简单的 JSON 对象,如下所示

d = { 'tag ': 'blah',
  'name' : 'sam',
  'score': 
    {'row1': 100,
      'row2': 200
     }
}

以下是我的 python 代码,它向 Kafka 发送消息

from kafka import SimpleProducer, KafkaClient
import json 

# To send messages synchronously
kafka = KafkaClient('10.20.30.12:9092')
producer = SimpleProducer(kafka)
jd = json.dumps(d)
producer.send_messages(b'message1',jd)

我在风暴日志中看到消息正在被接收,但它为元组抛出 Transformation null { json structure in here } 不确定需要做什么才能解决这个问题?..

下面是我的生产者到 kafka 的代码。 我唯一不同的是使用yaml.safe_load加载 json 内容。 它将内容作为字符串而不是 unicode 返回。 以下是片段

with open('smaller_test_prod.txt') as f:
    for line in f:
        d = yaml.safe_load(line)
        jd = json.dumps(d)
        producer.send_messages(b'zeus_metrics',jd)

在这里每一行都是一个存储在文件中的json数据。

Kafka 期望以字节为单位的值

b`some json message`

这是我的简单 Kafka 生产者,它将消息发送到 Kafka 服务器。

import json
from bson import json_util

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')

for i in range(10):
    data = { 'tag ': 'blah',
        'name' : 'sam',
        'index' : i,
        'score': 
            {'row1': 100,
             'row2': 200
        }
    }   
    producer.send('orders', json.dumps(data, default=json_util.default).encode('utf-8'))

这里 json.dumps() 将 json 转换为字符串, encode('utf-8') 将字符串转换为字节数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM