Avro通过schema写.avro文件

  1. 导入依赖
<dependency>
	<groupId>org.apache.avro</groupId>
	<artifactId>avro</artifactId>
	<version>1.9.2</version>
</dependency>
  1. 构造scheam
{
    \"type\": \"record\",
    \"name\": \"hudi_rowkey_test_record\",
    \"namespace\": \"hoodie.hudi_rowkey_test\",
    \"fields\": [
        {
            \"name\": \"id\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"fk_id\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"lmdm\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"sldw\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"ugsa\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"kspc\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"siii\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"isdeleted\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"lastupdatedttm\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        },
        {
            \"name\": \"rowkey\",
            \"type\": [
                \"string\",
                \"null\"
            ]
        }
    ]
}";

  1. 代码写入
private static String schemaFile2 = "{\"type\":\"record\",\"name\":\"hudi_rowkey_test_record\",\"namespace\":\"hoodie.hudi_rowkey_test\",\"fields\":[{\"name\":\"id\",\"type\":[\"string\",\"null\"]},{\"name\":\"fk_id\",\"type\":[\"string\",\"null\"]},{\"name\":\"lmdm\",\"type\":[\"string\",\"null\"]},{\"name\":\"sldw\",\"type\":[\"string\",\"null\"]},{\"name\":\"ugsa\",\"type\":[\"string\",\"null\"]},{\"name\":\"kspc\",\"type\":[\"string\",\"null\"]},{\"name\":\"siii\",\"type\":[\"string\",\"null\"]},{\"name\":\"isdeleted\",\"type\":[\"string\",\"null\"]},{\"name\":\"lastupdatedttm\",\"type\":[\"string\",\"null\"]},{\"name\":\"rowkey\",\"type\":[\"string\",\"null\"]},{\"name\":\"compsiteKey\",\"type\":[\"string\",\"null\"]}]}";

    public static void main(String[] args) {
        Schema schema = new Schema.Parser().parse(schemaFile);

        int size = new Schema.Parser().parse(schemaFile).getFields().size();
        //2. scheam 新添加一列
        Schema type = Schema.createUnion(Schema.create(Schema.Type.STRING), Schema.create(Schema.Type.NULL));
        Schema.Field field = new Schema.Field("compsitekey", type, "", "");
        schema.getFields().add(size, field);

        //Schema.Field field = schema.getFields().get(10);
        GenericRecord my = new GenericData.Record(new Schema.Parser().parse(schema.toString()));
        my.put("id", "xxxx");
        my.put("fk_id", "xxxx");
        my.put("lmdm", "xxxx");
        my.put("sldw", "xxxx");
        my.put("ugsa", "xxxx");
        my.put("kspc", "xxxx");
        my.put("siii", "xxxx");
        my.put("isdeleted", "xxxx");
        my.put("lastupdatedttm", "xxxx");
        my.put("rowkey", "xxxx");
        my.put("compsitekey", "xxxx");

        System.out.println("---------------------------");


    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值