使用字段名称列表和相同模式构建 Avro 模式
Build a Avro Schema with a list of field names and the same schema
我在寻找解决问题的方法时遇到了问题。
我需要在 struct() 和 build() 方法之间调用字段方法 x 次以创建新对象。这是一个构建器模式。
Schema people = SchemaBuilder.struct()
.field("NAME", Schema.STRING_SCHEMA)
.field("SURNAME", Schema.STRING_SCHEMA)
.field("CITY", Schema.STRING_SCHEMA)
.build();
但在我的例子中,people 模式的字段从一开始就没有定义。它们需要可变。我需要这样的东西:
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();
怎么样?
我在寻找解决问题的方法时遇到了问题。
我需要在 struct() 和 build() 方法之间调用字段方法 x 次以创建新对象。这是一个构建器模式。
Schema people = SchemaBuilder.struct()
.field("NAME", Schema.STRING_SCHEMA)
.field("SURNAME", Schema.STRING_SCHEMA)
.field("CITY", Schema.STRING_SCHEMA)
.build();
但在我的例子中,people 模式的字段从一开始就没有定义。它们需要可变。我需要这样的东西:
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();
怎么样?