【发布时间】:2018-12-07 05:53:00
【问题描述】:
我写了一个 jave 代码从本地文件系统中读取一个 json 数据,我想将该数据作为键值对发送
public static void main(String[] args) throws IOException
{
Stream<String> objec = Files.lines(Paths.get("path\\data.json"));
String topicName="test";
Properties props=new Properties();
props.put("kafka.bootstrap.servers", "localhost:9092,localhost:9093");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String,String> sampleProducer= new KafkaProducer<String,String>(props);
objec.forEach(f->{
ProducerRecord<String, String> record = new ProducerRecord<String, String>(topicName,f);
sampleProducer.send(record);
});
sampleProducer.close();
但是当我运行这个将数据作为字符串发送给 kafkaconsumer 的程序时,我如何将 json 数据作为键值对发送给 kafka 消费者...
这里是示例 json 文件
{
"wifi_result":"1",
"mic_result":"1",
"video_result":"1",
"touch_result":"1",
"proximity_result":"1",
"vibrator_result":"1",
"power_key":"2",
"accelerometer":"0",
"earphone":"1",
"memory_result":"1",
"memory_internalSD":"1",
"memory_internalSDSize":"25.0GB",
"memory_externalSD":"0",
"memory_externalSDSize":"",
"memory_internalflash":"1",
"memory_internalflashSize":"2.0GB",
"vol_key_down":"0",
"menu_key":"1",
"headset_result":"1",
}
帮助将不胜感激...在此先感谢...
【问题讨论】:
-
您正在将文件作为字符串而不是 json 对象读取。其次,如果您可以在这里使用实际和预期的数据结构对您的数据进行采样,它将为我们提供更多的洞察力来帮助您。
-
@AmithKumar 没有读取 JSON 文件..
-
是的,我知道您正在读取一个 json 文件,但是当您在 java 类中读取时并没有将其解析为 json 对象,而是将其解析为字符串对象。请同时发布您预期的主题记录和实际的主题记录。
-
@AmithKumar 我只是想读取数据并发布到一些Kafka主题中,但是数据将是键值对??不是字符串..!
-
解决了您的问题吗?
标签: java apache-kafka kafka-producer-api