フィールド名のリストと同じスキーマでアブロスキーマを構築

at1ll3y:

私の問題の解決策を見つける問題を抱えてイム。

私は、新しいオブジェクトを作成するために、構造体()およびビルド()メソッドのx倍の間のフィールドメソッドを呼び出す必要があります。これは、Builderパターンです。

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とラムダに見えたが、彼らと働いたことはないし、それらが、この場合の解決策になることができればわかりません。私は方法を中断することはできません。彼らはすべて一列に呼び出される必要があります。私も可能とそうであれば、どのように何をしようとしていますか?

感謝

編集:これは私が試したが、うまくいかなかったものです:

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();

どのようにそのような何かの試合?

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=277983&siteId=1