gpt4 book ai didi

java - 使用字段名称列表和相同架构构建 Avro 架构

转载 作者:行者123 更新时间:2023-12-01 19:28:24 26 4
gpt4 key购买 nike

我在寻找解决方案时遇到问题。

我需要在 struct() 和 build() 方法之间调用字段方法 x 次来创建一个新对象。这是一个构建器模式。

Schema people = SchemaBuilder.struct()
.field("NAME", Schema.STRING_SCHEMA)
.field("SURNAME", Schema.STRING_SCHEMA)
.field("CITY", Schema.STRING_SCHEMA)
.build();

但就我而言,人员模式的字段从一开始就没有定义。它们需要是可变的。我需要类似的东西:

String[] values = {"NAME", "SURNAME", "CITY", "FIELD4", "FIELD5", .....};

Schema people = SchemaBuilder.struct()
.xTimes.field(values[x], Schema.STRING_SCHEMA))
.build();

我研究过 Streams 和 lambda,但从未使用过它们,并且不确定它们是否可以作为这种情况的解决方案。我不能打断这些方法。它们都需要连续调用。我正在尝试做的事情是否可能,如果可以,如何实现?

谢谢

编辑:这是我尝试过但没有成功的方法:

public Schema buildSchema(String... fields){
sch1 = SchemaBuilder.struct();
for (int i = 0; i < fields.length; i++) {
sch1 =SchemaBuilder.struct().field(fields[i], Schema.STRING_SCHEMA);
}
return sch1;
}

这工作得很好,但不符合我的需要:

public Schema buildSchema(){
Schema sch1 = SchemaBuilder.struct()
.field("foo", Schema.STRING_SCHEMA)
.field("bar", Schema.STRING_SCHEMA)
.field("duck", Schema.STRING_SCHEMA)
.build();
return sch1
}

最佳答案

String[] values = {"NAME", "SURNAME", "CITY", "FIELD4", "FIELD5", .....};

SchemaBuilder builder = SchemaBuilder.struct();
for (int i = 0; i < values.length; i++) {
builder = builder.field(values[i], Schema.STRING_SCHEMA)
}
Schema people = builder.build();

类似的事情怎么样?

关于java - 使用字段名称列表和相同架构构建 Avro 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60654116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com