17.12. 融合集成¶
Kafka数据存储可以与合流Kafka主题和合流架构注册表集成。模式注册表是版本化Avro模式的集中存储,每个模式都与特定的Kafka主题相关联。融合的Kafka数据存储将Avro模式转换为 SimpleFeatureTypes
并将记录反序列化为 SimpleFeatures
。
要使用融合主题,请在项下的数据存储参数映射中设置模式注册表的URL kafka.schema.registry.url
。在Geoserver中,不要选择常规的Kafka商店,而是选择“Confluent Kafka(GeoMesa)”商店。
请注意,Confluent需要融合的客户端JAR,而不是与GeoMesa捆绑在一起。如果GeoMesa Kafka二进制分布已经 installed ,然后是脚本 bin/install-confluent-dependencies.sh
可以用来下载它们。
17.12.1. 支持的Avro架构字段¶
支持以下AVRO架构字段类型: STRING
, BOOLEAN
, INT
, DOUBLE
, LONG
, FLOAT
, BYTES
,以及 ENUM
。这个 UNION
类型仅适用于的联合 NULL
和另一种受支持的类型,例如 "type": ["null","string"]
。
17.12.2. 支撑点 SimpleFeature
田¶
对可能是 SimpleFeature
,但不是标准Avro模式的一部分,例如 Geometry
或 Date
,Confluent Kafka Data Store支持解释模式字段上的几个键-值元数据属性,如下所述。所有属性值都不区分大小写。
以下未列出且不是标准Avro属性的字段上的任何其他属性都将作为SFT属性用户数据包括在内。架构上的任何其他属性都将作为SFT用户数据包括在内。
17.12.2.1. geomesa.geom.format
¶
指示该字段应解释为 Geometry
在给定的格式中。必须随身携带钥匙 geomesa.geom.type
。
价值 |
架构字段类型 |
描述 |
---|---|---|
|
|
对象的熟知文本表示形式 |
|
|
已知的二进制表示形式 |
17.12.2.2. geomesa.geom.type
¶
指示该字段应解释为 Geometry
给定类型的。必须随身携带钥匙 geomesa.geom.format
。
价值 |
描述 |
---|---|
|
A |
|
A |
|
A |
|
A |
|
A |
|
A |
|
A |
|
A |
17.12.2.3. geomesa.geom.default
¶
指示该字段代表默认 Geometry
为此 SimpleFeatureType
。如果钥匙 geomesa.geom.format
和 geomesa.geom.type
不在同一架构字段中,则此属性将被忽略。对于给定的架构,可能只有其中一个属性。
价值 |
描述 |
---|---|
|
默认设置 |
|
不是默认设置 |
17.12.2.4. geomesa.date.format
¶
指示该字段应解释为 Date
在给定的格式中。
价值 |
架构字段类型 |
描述 |
---|---|---|
|
|
从unix时代开始的毫秒数 |
|
|
通用ISO日期格式 |
|
|
通用ISO日期时间格式 |
17.12.2.5. geomesa.visibility.field
¶
指定此字段的值应用作此要素的可见性 SimpleFeatureType
。对于给定的架构,可能只有其中一个属性。
价值 |
架构字段类型 |
描述 |
---|---|---|
|
|
使用此字段的值作为要素可见性 |
|
|
请勿将此字段用作要素可见性 |
17.12.2.6. geomesa.exclude.field
¶
指定是否应将此字段从 SimpleFeatureType
。所有没有此属性的字段都将包括在内。
价值 |
描述 |
---|---|
|
从SFT中排除此字段 |
|
不要将此字段从SFT中排除 |
17.12.3. GeoMesa Avro模式示例¶
{
"namespace": "org.locationtech",
"type": "record",
"name": "GeoMesaAvroSchema",
"geomesa.index.dtg": "date",
"fields": [
{
"name": "id",
"type": "string",
"index": "true",
"cardinality": "high"
},
{
"name": "position",
"type": "string",
"geomesa.geom.format": "wkt",
"geomesa.geom.type": "point",
"geomesa.geom.default": "true",
"srid": "4326"
},
{
"name": "timestamp",
"type": ["null","long"],
"geomesa.date.format": "epoch-millis"
},
{
"name": "date",
"type": "string",
"geomesa.date.format": "iso-datetime"
},
{
"name": "visibility",
"type": "string",
"geomesa.visibility.field": "true",
"geomesa.exclude.field": "true"
}
]
}
17.12.4. 架构覆盖配置¶
用于生成 SimpleFeatureType
可以有选择地通过在键上添加数据存储配置参数来覆盖每个主题 kafka.schema.overrides
。该值必须是具有顶级密钥的Typesafe配置字符串 schemas
这是一个包含从主题名称到模式定义的映射的对象。如果存在架构的覆盖,则将使用它而不是架构注册表。如果您的现有模式没有GeoMesa特性,则替代可能会很有用。
17.12.4.1. 架构覆盖示例配置¶
{
"schemas": {
"topic1": {
"type": "record",
"name": "schema1",
"fields": [
{
"name": "id",
"type": "string",
"cardinality": "high"
},
{
"name": "position",
"type": "string",
"geomesa.geom.format": "wkt",
"geomesa.geom.type": "point",
"geomesa.geom.default": "true"
},
{
"name": "speed",
"type": "double"
}
]
},
"topic2": {
"type": "record",
"name": "schema2",
"fields": [
{
"name": "shape",
"type": "bytes",
"geomesa.geom.format": "wkb",
"geomesa.geom.type": "geometry"
},
{
"name": "date",
"type": ["null","long"],
"geomesa.date.format": "epoch-millis"
}
]
}
}
}