【问题标题】:ArrayIndexOutOfBoundsException when running range query in Accumulo在 Accumulo 中运行范围查询时出现 ArrayIndexOutOfBoundsException
【发布时间】:2016-01-05 20:56:38
【问题描述】:

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

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

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

但是我的代码都没有使用数组。异常是从底层库中抛出的。

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

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

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

编辑

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

【问题讨论】:

  • 不要认为您有该异常的完整堆栈跟踪,是吗?
  • 我想我已经找到了问题所在。我很确定这是我的一个愚蠢的错误(因为这些事情通常是这样)。如果我是对的,我会添加答案。

标签: java accumulo geomesa


【解决方案1】:

作为一个简短的说明,您可能正在使用 GeoMesa Accumulo 快速入门。那里的几何字段名为“Where”。如果您将过滤器更新为

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

它可能对你有用。

【讨论】:

    【解决方案2】:

    如果您将无效/不正确的表名传递给 toFilter,Geomesa/Accumulo 会误导性地抛出此红鲱鱼错误。在您花费大量时间阅读 general solutions to this problem 并搜索您的代码之前对于错误,请确保您拥有正确的表名。

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      相关资源
      最近更新 更多