如何实例化 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
如何实例化使用 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