avro使用概述

A.avsc:
存入采用的模板

{
  "type": "record",
  "name": "A",
  "fields": [
    {"name":"item1","type":"string"},
    {"name":"item2","type":"string"}
  ]
}

存入数据

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    File template = new File("A.avsc");
    Schema schema = new Schema.Parser().parse(template);
    GenericRecord a = new GenericData.Record(schema);
    DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(a.getSchema());
    DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<>(datumWriter);
    dataFileWriter.create(a.getSchema(), out);
    a.put("item1", "输入内容1");
    a.put("item2", "输入内容2");
    dataFileWriter.append(a);
    dataFileWriter.close();
    InputStream inputStream = new ByteArrayInputStream(out.toByteArray());
    // 再用inputStream生成data.avro文件

maven compile生成读取使用的实体

<plugin>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro-maven-plugin</artifactId>
    <version>1.11.0</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>schema</goal>
            </goals>
            <configuration>
                <sourceDirectory>${project.basedir}/src/main/resources</sourceDirectory>
                <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

打包生成
A.java实体

读取:

 File dataFile = new File(data.avro);
 SpecificDatumReader<Weather> reader = new SpecificDatumReader<>(Aclass);
 DataFileReader<Weather> dataFileReader = new DataFileReader<>(dataFile, reader);
 while (dataFileReader.hasNext()) {
     A a = dataFileReader.next();
     // 输出a
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值