【问题标题】:Adding CSV to Accumulo/GeoMesa with converter files使用转换器文件将 CSV 添加到 Accumulo/GeoMesa
【发布时间】:2019-03-29 09:07:56
【问题描述】:

将(空间)数据添加到 GeoMesa/Accumulo 堆栈的最佳方式是什么?

(1) 如果我理解正确,应该创建一个 SimpleFeature 创建文件和转换器文件以添加数据。数据本身存储为 CSV。我是否正确,我们必须为我们希望添加的每个 CSV 构建这些文件?

(2) 下面的例子正确吗?例如,CSV 文件中的几何图形存储如下。 " 多行字符串((2.0116069 48.9172785,2.0116474 48.9172131,2.0117161 48.917135,2.011814 48.9170714,2.0118996 48.9170489))"

(3) 我们如何将这些转换器文件添加到将数据添加到 GeoMesa/Accumulo 堆栈的过程中?

最终的目标是有一个(简单的)程序将数据添加到堆栈中,并在下一步中通过地理服务器打开数据。

欢迎任何形式的帮助。提前致谢。

简单的特征创建文件:

geomesa.sfts.links_geom = {
      attributes = [
        { name = "id", type = "Long" }
        { name = "length",     type = "Float" }
        { name = "number", type = "Integer" }
        ...
        { name = "geom", type = "MultiLineString", srid = 4326 }
      ]
} ```


Converter file:
geomesa.converters.links_geom = {
      type = "delimited-text",
      format = "CSV",
      id-field = "toString($id)",
      fields = [
        { name = "id", transform = "$1::long" }
        { name = "length",     transform = "$2::float" }
        { name = "number", transform = "$3::int" }
        ...
        { name = "geom", transform = "multilinestring($11)" }
      ]
}

【问题讨论】:

    标签: accumulo geomesa


    【解决方案1】:

    没有将数据摄取到 GeoMesa 的“最佳”方式,这取决于您的具体用例。命令行工具提供了一个简单的入口点,但更高级的场景可能会使用 Apache NiFi、Apache Storm 等流处理框架或 AWS Lambda 等云原生工具。

    GeoMesa 是一个 GeoTools 数据存储,因此您可以使用 DataStore API 写入数据,而无需任何转换器定义。 geomesa-tutorials 项目中有这样的例子。但是,转换器提供了一种无需任何代码即可定义数据类型的声明方式。它们也可以跨环境重复使用,所以如果你为 CLI 工具开发一个转换器,你可以很容易地使用相同的定义,例如Apache NiFi,允许您根据需要扩展和迁移您的摄取。

    通常,对于转换器,您确实需要为每种文件格式定义一个。 GeoMesa 为 CSV 文件提供类型推断,如 here 所述,它可以让您在没有转换器的情况下获取数据,或者至少提供一个初始模板,您可以根据自己的需要进行调整。 有关于将转换器添加到类路径 herehere 的信息。

    在开发初始转换器定义时,使用convert CLI 命令会很有帮助,错误模式为“引发错误”,如here 所述。一旦你的定义是可靠的,你就可以继续摄取了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多