ArrayIndexOutOfBoundsException when 运行 range query in Accumulo

ArrayIndexOutOfBoundsException when running range query in Accumulo

我正在使用 Geomesa 1.1 通过 Java 连接到 Accumulo 1.6.2。我在数据库中查询特定属性(特定列值)没有问题。但是当我尝试 运行 范围查询时(尝试了时间范围和几何范围)我得到了一个错误。

当我检查 Accumulo 日志时,我看到了这个错误:

exception while doing multi-scan 
    java.lang.ArrayIndexOutOfBoundsException: -1

但是我的代码 none 使用数组。底层库抛出异常。

这就是我构建 CQL 过滤器的方式:

Filter cqlFilter = CQL.toFilter("BBOX(where, 160.0, 1.0, 170.0, 3.0)");

可能导致 java.lang.ArrayIndexOutOfBoundsException: -1 的原因是什么?

编辑

更新了问题和答案以明确它不是重复的,并为未来的访问者提供更一般的帮助。

Geomesa/Accumulo 如果您将 invalid/incorrect table 名称传递给 toFilter. 之前会误导性地抛出此红鲱鱼错误您花了很多时间通读 并搜索代码中的错误,请确保您的 table 名称正确。

快速说明一下,您可能正在使用 GeoMesa Accumulo QuickStart。那里的几何字段名为 'Where'。如果您将过滤器更新为

Filter cqlFilter = CQL.toFilter("BBOX(Where, 160.0, 1.0, 170.0, 3.0)");

它可能适合你。