0

我正在使用 geomesa hbase 开发一个地理服务器,但是当我创建一个新的数据存储时,我在 bigtable.table.name 中遇到了一些问题。

问题是我所有表的名称都是这样的' published.cityos.fonts ',但是当我保存商店时会抛出这样的错误

创建数据存储时出错,请检查参数。错误消息:字符串索引超出范围:-1

我复制了一张表进行测试并命名为“ cityos.fonts ”,但没有收到任何错误。

是否可以在不必复制和重命名 100 个表的情况下解决问题?

非常感谢您提前。

控制台错误:

WARN [data.store] - 获取新数据存储时出错 java.io.IOExceptionç 原因:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:org.locationtech 的 java.lang.String.substring(Unknown Source) 处的 -1 .geomesa.index.metadata.CachedLazyMetadata$.decodeRow(CachedLazyMetadata.scala:137) 在 org.locationtech.geomesa.index.metadata.CachedLazyMetadata$$anonfun$getFeatureTypes$1.apply(CachedLazyMetadata.scala:57) 在 org.locationtech。 geomesa.index.metadata.CachedLazyMetadata$$anonfun$getFeatureTypes$1.apply(CachedLazyMetadata.scala:57) at scala.collection.Iterator$$anon$11.next(Iterator.scala:370) at org.locationtech.geomesa.utils。 collection.CloseableIterator$$anon$2.next(CloseableIterator.scala:36) at scala.collection.Iterator$class.toStream(Iterator.scala:1180) at org.locationtech.geomesa。utils.collection.CloseableIterator$$anon$2.toStream(CloseableIterator.scala:34) at scala.collection.TraversableOnce$class.toSeq(TraversableOnce.scala:296) at org.locationtech.geomesa.utils.collection.CloseableIterator$$anon $2.toSeq(CloseableIterator.scala:34) at org.locationtech.geomesa.index.metadata.CachedLazyMetadata$class.getFeatureTypes(CachedLazyMetadata.scala:57) at org.locationtech.geomesa.hbase.data.HBaseBackedMetadata.getFeatureTypes(HBaseBackedMetadata.getFeatureTypes) scala:19) at org.locationtech.geomesa.index.geotools.GeoMesaDataStore.getTypeNames(GeoMesaDataStore.scala:137) at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97) at org.geoserver.catalog .ResourcePool.getDataStore(ResourcePool.java:649)34) 在 org.locationtech.geomesa.utils.collection.CloseableIterator$$anon$2.toSeq(CloseableIterator.scala:34) 在 org.locationtech.geomesa 的 scala.collection.TraversableOnce$class.toSeq(TraversableOnce.scala:296) .index.metadata.CachedLazyMetadata$class.getFeatureTypes(CachedLazyMetadata.scala:57) 在 org.locationtech.geomesa.hbase.data.HBaseBackedMetadata.getFeatureTypes(HBaseBackedMetadata.scala:19) 在 org.locationtech.geomesa.index.geotools.GeoMesaDataStore .getTypeNames(GeoMesaDataStore.scala:137) 在 org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:649) 在 org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97)34) 在 org.locationtech.geomesa.utils.collection.CloseableIterator$$anon$2.toSeq(CloseableIterator.scala:34) 在 org.locationtech.geomesa 的 scala.collection.TraversableOnce$class.toSeq(TraversableOnce.scala:296) .index.metadata.CachedLazyMetadata$class.getFeatureTypes(CachedLazyMetadata.scala:57) 在 org.locationtech.geomesa.hbase.data.HBaseBackedMetadata.getFeatureTypes(HBaseBackedMetadata.scala:19) 在 org.locationtech.geomesa.index.geotools.GeoMesaDataStore .getTypeNames(GeoMesaDataStore.scala:137) 在 org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:649) 在 org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97)toSeq(CloseableIterator.scala:34) at org.locationtech.geomesa.index.metadata.CachedLazyMetadata$class.getFeatureTypes(CachedLazyMetadata.scala:57) at org.locationtech.geomesa.hbase.data.HBaseBackedMetadata.getFeatureTypes(HBaseBackedMetadata.scala: 19) 在 org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97) 在 org.geoserver.catalog.ResourcePool 的 org.locationtech.geomesa.index.geotools.GeoMesaDataStore.getTypeNames(GeoMesaDataStore.scala:137) .getDataStore(ResourcePool.java:649)toSeq(CloseableIterator.scala:34) at org.locationtech.geomesa.index.metadata.CachedLazyMetadata$class.getFeatureTypes(CachedLazyMetadata.scala:57) at org.locationtech.geomesa.hbase.data.HBaseBackedMetadata.getFeatureTypes(HBaseBackedMetadata.scala: 19) 在 org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97) 在 org.geoserver.catalog.ResourcePool 的 org.locationtech.geomesa.index.geotools.GeoMesaDataStore.getTypeNames(GeoMesaDataStore.scala:137) .getDataStore(ResourcePool.java:649)getTypeNames(GeoMesaDataStore.scala:137) at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:649) at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97)getTypeNames(GeoMesaDataStore.scala:137) at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:649) at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97)

4

2 回答 2

1

我认为问题不是由于表名,而是由于第一个表中的额外数据。GeoMesa 期望目录表仅包含简单的要素类型元数据。为了确定给定目录中的简单要素类型,GeoMesa 扫描表并使用正则表达式从行值中提取类型名称。例如,abastament_agbarType~attributes表示类型名称为abastament_agbarType. 原始表似乎有很多非 GeoMesa 行,这导致行正则表达式失败。

我创建了一张票来跟踪这里的问题。我们可以添加一个 try/catch 并记录无效行的警告。但是,即使使用该修复程序,目录中的大量数据也会变得getTypeNames非常慢,因此如果可能,您应该避免使用它。

于 2018-01-30T18:24:00.743 回答
0

一旦进行了更改...

当我尝试从源代码构建时,当我到达 geomesa-index-api 的部分时,它会停止。我得到一个编译错误。

[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.1:compile (scala-compile-first) on project geomesa-index-api_2.11: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :geomesa-index-api_2.11

我正在使用这个 cli 命令进行构建:

mvn clean install -DskipTests -Dcheckstyle.skip

当我在没有更改的情况下构建时,它正在构建好的,没有任何错误

谢谢。

于 2018-01-31T10:29:19.103 回答