【发布时间】:2018-10-28 12:12:35
【问题描述】:
我有一个文件包含AVRO格式的数据,需要直接发布到kafka主题。在我的代码中是否有任何实用程序无需大量数据解析?使用kafka 1.0版本。
【问题讨论】:
标签: apache-kafka avro kafka-producer-api
我有一个文件包含AVRO格式的数据,需要直接发布到kafka主题。在我的代码中是否有任何实用程序无需大量数据解析?使用kafka 1.0版本。
【问题讨论】:
标签: apache-kafka avro kafka-producer-api
您可以从 AVRO 文件中读取数据,然后将其序列化为字节数组。
final Schema avroSchema = new Schema.Parser().parse(new File("yourAvroSchema.avsc"));
File avroFile="yourAvroFile.avro"
// Read as GenericRecord
final GenericDatumReader<GenericRecord> genericDatumReader = new GenericDatumReader<>(avroSchema );
final DataFileReader<GenericRecord> genericRecords = new DataFileReader<>(avroFile, genericDatumReader);
// Serialization
ByteArrayOutputStream out = new ByteArrayOutputStream();
DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(avroSchema);
Encoder binaryEncoder = EncoderFactory.get().binaryEncoder(out, null);
while (genericRecords.hasNext()) {
writer.write(genericRecords.next(), binaryEncoder);
}
binaryEncoder.flush();
out.close();
// ....
【讨论】:
writer.write 没有向 Kafka 生产,这就是问题所在。我不确定你需要ByteArrayOutputStream,而应该是KafkaProducer