12.3. 转换器处理器¶
转换器处理器 (PutGeoMesa
和 ConvertToGeoFile
)接受以下配置参数以指定输入源:
属性 |
描述 |
---|---|
|
要使用的类路径上的SFT的名称。此属性重写SftSpec。 |
|
SFT规范字符串。如果两者都设置,则由SftName重写。 |
|
在从SftName或SftSpec接收时覆盖功能类型名称。 |
|
要使用的类路径上的转换器的名称。此属性重写ConverterSpec。 |
|
转换器规范字符串。如果同时设置了这两个值,则由ConverterName重写。 |
|
覆盖转换器错误模式 ( |
|
覆盖转换器指标报告器(见下文) |
|
向转换器框架公开按名称引用的流文件属性 |
|
要添加到类路径的其他资源,例如转换器和SFT定义 |
此外, PutGeoMesa
处理器接受其他配置:
属性 |
描述 |
---|---|
|
在处理器启动时初始化基础数据存储区中的架构。模式应以标准Java属性格式定义,以类型名称为键,以要素类型规范或查找为值 |
12.3.1. 定义简单要素类型和转换器¶
GeoMesa NiFi处理器打包了一组预定义的SimpleFeatureType模式定义和GeoMesa转换器定义,用于流行的数据源,如Twitter、GDELT和OpenStreetMaps。
提供的源代码的完整列表可在 预打包的转换器定义 。
对于自定义数据源,有两种提供自定义SFT和转换器的方法:
12.3.1.1. 在类路径上提供SimpleFeatureTypes和转换器¶
要将配置捆绑到JAR文件中,只需将您的配置放在一个名为 reference.conf
然后把它放在 at the root level JAR文件的名称:
$ jar cvf data-formats.jar reference.conf
您可以验证您的JAR是否构建正确:
$ jar tvf data-formats.jar
0 Mon Mar 20 18:18:36 EDT 2017 META-INF/
69 Mon Mar 20 18:18:36 EDT 2017 META-INF/MANIFEST.MF
28473 Mon Mar 20 14:49:54 EDT 2017 reference.conf
使用 ExtraClasspaths
属性将处理器指向JAR文件。该属性接受逗号分隔的资源列表。设置完成后, SftName
和/或 ConverterName
属性将使用您的转换器的名称进行更新。您需要关闭配置面板并重新打开它,才能更新属性。
12.3.1.2. 通过UI定义SimpleFeatureTypes和转换器¶
您也可以通过NiFi用户界面在处理器配置中直接提供SimpleFeatureTypes和Converter。只需将您的TypeSafe配置粘贴到 SftSpec
和 ConverterSpec
属性字段。
12.3.1.3. 通过流文件属性定义SimpleFeatureTypes和转换器¶
您还可以使用流文件属性覆盖处理器配置字段。以下属性可用:
geomesa.sft.name
corresponds to the Processor configurationFeatureNameOverride
geomesa.sft.spec
corresponds to the Processor configurationSftSpec
geomesa.converter
corresponds to the Processor configurationConverterSpec
警告
应谨慎使用通过流文件属性进行的配置,因为任何错误的配置都可能成倍增加。例如,设置 geomesa.sft.name
设置为非递归值可能最终会为每个流文件创建一个新的架构,从而可能会因为创建太多的表而导致数据库崩溃。
12.3.2. 正在初始化架构¶
这个 InitializeSchemas
配置可用于在处理器启动时在基础数据存储中创建架构,而不必等待数据流经处理器。方案被定义为标准的Java属性文件,其中配置的每一行都应包含要素类型的名称作为键,类型的定义作为值,对应于 FeatureNameOverride
和 SftName
/ SftSpec
(见上文)。例如::
gdelt=gdelt2
example-csv=example-csv
test=name:String,dtg:Date,*geom:Point:srid=436
12.3.3. 转换器指标¶
GeoMesa支持发布关于摄取转换过程的指标。看见 量度 和 GeoMesa指标 了解更多细节。GeoMesa NiFi转换器处理器允许直接在NiFi中使用 ConverterMetricReporters
属性,而不是在转换器定义中。该属性需要定义记者或记者列表的TypeSafe配置块,例如:
{
type = "slf4j"
units = "milliseconds"
interval = "60 seconds"
logger = "org.locationtech.geomesa.metrics"
level = "debug"
}