8.3. 接收命令

这些命令用于插入和删除简单要素。所需的参数用 *

8.3.1. delete-features

从方案中删除特定要素。请注意,如果删除所有要素,则删除模式并重新创建可能会更快。

论据

描述

-c, --catalog *

包含架构元数据的目录表

-f, --feature-name *

架构的名称

-q, --cql

用于选择要删除的要素的CQL过滤器

--force

取消确认提示

8.3.2. ingest

摄取命令获取各种格式的文件,并将其摄取为 SimpleFeature S在地理台地。通常,需要一个GeoMesa‘Converter’定义才能将输入数据映射到 SimpleFeature S。GeoMesa支持分隔符文本(tsv、csv)、固定宽度文件、json、xml、avro等常见输入格式。转换器框架可通过Java SPI进行扩展,以支持定制格式。看见 GeoMesa转换器 有关转换器的详细信息,请参阅。

看见 移动和迁移数据 有关如何使用EXPORT/IMPORT命令在群集之间移动数据的详细信息。

论据

描述

-c, --catalog *

包含架构元数据的目录表

-f, --feature-name

架构的名称

-s, --spec

这个 SimpleFeatureType 要创建的规格

-C, --converter

用于创建以下内容的GeoMesa转换器 SimpleFeature S

--converter-error-mode

覆盖由转换器定义的错误模式

-t, --threads

使用的并行线程数

--input-format

输入文件格式(csv、tsv、avro、shp、json等)

`--index

指定要写入的特定GeoMesa索引,而不是所有索引

--no-tracking

此应用程序在接收作业提交时关闭。对于使用脚本启动作业很有用

--run-mode

一定是其中之一 localdistributed (适用于地图/减少摄取)

--combine-inputs

将多个输入文件合并为单个输入拆分(仅限分布式作业)

--split-max-size

拆分的最大字节数(分布式作业)

--src-list

输入文件是文本文件,其中包含要摄取的文件列表,每行一个

--force

取消任何确认提示

<files>...

要摄取的输入文件

这个 --converter 参数可以是以下任意一种:

  • 类路径上已提供的GeoMesa转换器的名称

  • 转换器配置字符串

  • 包含转换器配置的文件的名称

如果未指定转换器,GeoMesa将尝试根据输入文件推断转换器定义。目前,它支持GeoJSON、自描述Avro、分隔文本(TSV、CSV)或Shapefile。如果GeoMesa能够推断模式和转换器定义,则用户可以按原样接受它们,或者将它们用作完全定制转换器的基础。如果需要,用户可以将推断的转换器持久化到文件中,这允许轻松修改和重复使用。在摄取大型数据集时,在本地模式下摄取单个文件、使用模式推理来生成转换器可能很有用。转换器定义可以持久化并调整到令人满意的程度,然后通过分布式接收用于整个数据集。

看见 定义简单要素转换器 有关指定转换器的更多详细信息,请参见。

这个 converter-error-mode 参数可用于重写转换器中定义的错误模式。它一定是其中之一 skip-bad-recordsraise-errors

如果 --feature-name 并且该架构已存在,则 --spec 不是必需的。同样,如果未定义转换器,则架构将与转换器一起推断。否则, --spec 可以是以下任一项:

  • 属性字符串,例如 name:String,dtg:Date,*geom:Point:srid=4326

  • 对象的名称 SimpleFeatureType 在类路径上已可用

  • 定义为TypeSafe配置的属性字符串

  • 包含以上内容之一的文件的名称

如果该架构不存在,则 --feature-name 如果规范字符串中未隐含参数,则参数是必需的。它还可用于覆盖隐含的功能名称。

看见 定义简单要素类型 有关指定 SimpleFeatureType

这个 --input-format 参数可用于指定要接收的文件的类型。目前,GeoMesa支持Avro、CSV、TSV、Json/GeoJson、GML和SHP。如果未指定,将使用输入文件扩展名来确定文件类型。

这个 --no-tracking 参数指示应用程序在接收作业提交后关闭,而不是跟踪和显示接收进度。当脚本正在提交作业或不希望让JVM保持运行时,这很有用。请注意,提供此参数不会使应用程序静默,它仍将提供有关作业提交状态的信息。

这个 --run-mode 参数可用于在本地或分布式运行摄取(使用MAP/RECESS)。请注意,为了在分布式模式下运行,输入文件必须在HDFS中。默认情况下,本地文件系统上的输入文件将以本地模式获取,而HDFS中的输入文件将以分布式模式获取。这个 --combine-inputs 标志可用于在每个映射器中处理多个文件,最多可达 --split-max-size

这个 --threads 参数可用于提高本地摄取速度。但是,线程数不能超过输入文件数。这个 --threads 对于分布式接收,忽略参数。

这个 --split-max-size 参数可用于控制每个映射器处理的数据量。这在与DistributedCombine结合使用时非常有用 --run-mode 如果输入文件很小,或者为每个文件启动映射器都会变得非常慢。例如,如果您有100个5MB的文件,则100000000(100MB)的设置将安排5个映射器。

这个 --src-list 当要摄取的文件多于命令行允许您指定的文件时,参数非常有用。该文件指示GeoMesa将输入文件视为换行符分隔的文件列表。由于这使得运行可能需要几天的摄取作业变得非常容易,因此建议将列表拆分成合理的块,这些块可以在几个小时内完成。

这个 --force 参数可用于取消任何确认提示(通常来自转换器推理),这在编写命令脚本时很有用。

这个 <files>... 参数指定要接收的文件。 * 可用作文件路径中的通配符。GeoMesa可以处理 gzipbzipxz 只要文件扩展名与压缩类型匹配,即可压缩文件。GeoMesa支持从本地磁盘或HDFS摄取文件。此外,支持亚马逊的S3和微软的Azure文件系统,只需进行一些配置更改即可。看见 远程文件系统支持 了解更多细节。注意:此参数的行为由 --src-list 争论。

通过使用单个 - 对于输入文件,可以使用标准Shell重定向将输入数据直接输送到摄取命令。请注意,这将仅在本地模式下工作,并且将仅使用单个线程来摄取。在这种情况下,模式推理被禁用,进度指示器可能不完全准确,因为预先不知道总大小。

例如::

$ cat foo.csv | geomesa-accumulo ingest ... -
$ geomesa-accumulo ingest ... - <foo.csv

对于本地摄取,特写作者将被汇集在一起,仅定期刷新。刷新频率可以通过系统属性进行控制 geomesa.ingest.local.batch.size ,默认为每20,000个要素。