如何实例化 Kafka Connect Schema 数组

How to Instantiate Kafka Connect Schema array

如何实例化使用 SchemaBuilder.array(ARRAY_SCHEMA) 声明的 Array 实例?

使用 Kafka Connect Schema,您可以在自定义连接器中实例化一个 org.apache.kafka.connect.data.Struct,如下所示:

Schema STRUCT_SCHEMA = SchemaBuilder.struct().field("timestamp", Schema.INT64_SCHEMA).build();
Struct s = new Struct(STRUCT_SCHEMA);

您也可以声明数组模式,但我不知道如何创建:

Schema ARRAY_SCHEMA = SchemaBuilder.array(Schema.FLOAT64_SCHEMA).build();
// Create one here, how?

我实际上是在尝试将数组嵌套在结构中,但我认为问题是我无法实例化数组实例。简单地添加本机 Java 数组似乎不起作用。我在运行时看到的错误是:

Unable to create Struct from value: org.apache.kafka.connect.errors.DataException: Invalid Java object for schema type ARRAY: class [Ljava.lang.Double; for field: "floatValues"

对于嵌套模式:

Schema ARRAY_SCHEMA = SchemaBuilder.array(Schema.OPTIONAL_FLOAT64_SCHEMA).optional().build();
Schema STRUCT_SCHEMA = SchemaBuilder.struct()
                .field("timestamp", Schema.INT64_SCHEMA)
                .field("floatValues", ARRAY_SCHEMA).build();
Struct s = new Struct(STRUCT_SCHEMA);
s.put("floatValues", new Double[]{Double.valueOf(1)});
// I assume I must need to wrap the Double[] inside some Kafka Connect Array object?

我审查过的资源:

您需要使用 List

你可以看到 Struct unit tests here