【问题标题】:Publish an AVRO file to a kafka topic将 AVRO 文件发布到 kafka 主题
【发布时间】:2018-10-28 12:12:35
【问题描述】:

我有一个文件包含AVRO格式的数据,需要直接发布到kafka主题。在我的代码中是否有任何实用程序无需大量数据解析?使用kafka 1.0版本。

【问题讨论】:

    标签: apache-kafka avro kafka-producer-api


    【解决方案1】:

    您可以从 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
    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2019-01-10
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多