我正在使用geomesa hbase开发一个geoserver,但是当我创建一个新的数据存储时,我在bigtable.table.name中遇到了一些问题。
问题是我所有表的名称都是这样的' published.cityos.fonts ',但是当我保存商店时会给我一个像这样的错误
创建数据存储时出错,请检查参数。错误消息:字符串索引超出范围:-1
我复制了一个表来进行测试,并命名为' cityos.fonts '并且我没有收到任何错误。
是否可以在不必复制和重命名100个表的情况下解决问题?
非常感谢你。
控制台出错:
WARN [data.store] - 获取新数据存储java.io.IOExceptionç时出错 引起:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 at java.lang.String.substring(Unknown Source) 在org.locationtech.geomesa.index.metadata.CachedLazyMetadata $ .decodeRow(CachedLazyMetadata.scala:137) at org.locationtech.geomesa.index.metadata.CachedLazyMetadata $$ anonfun $ getFeatureTypes $ 1.apply(CachedLazyMetadata.scala:57) at org.locationtech.geomesa.index.metadata.CachedLazyMetadata $$ anonfun $ getFeatureTypes $ 1.apply(CachedLazyMetadata.scala:57) 在scala.collection.Iterator $$ anon $ 11.next(Iterator.scala:370) at org.locationtech.geomesa.utils.collection.CloseableIterator $$ anon $ 2.next(CloseableIterator.scala:36) 在scala.collection.Iterator $ class.toStream(Iterator.scala:1180) 在org.locationtech.geomesa.utils.collection.CloseableIterator $$ anon $ 2.toStream(CloseableIterator.scala:34) 在scala.collection.TraversableOnce $ class.toSeq(TraversableOnce.scala:296) 在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.scala:19) at org.locationtech.geomesa.index.geotools.GeoMesaDataStore.getTypeNames(GeoMesaDataStore.scala:137) at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97) 在org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:649)
答案 0 :(得分:1)
我认为这个问题不是由于表名,而是由于第一个表中的额外数据。 GeoMesa期望目录表仅包含简单的要素类型元数据。要确定给定目录中的简单要素类型,GeoMesa会扫描表并使用正则表达式从行值中提取类型名称。例如,abastament_agbarType~attributes
表示类型名称为abastament_agbarType
。原始表似乎有很多非GeoMesa行,这导致行正则表达式失败。
我创建了一张跟踪问题here的故障单。我们可以添加try / catch并在无效行上记录警告。但是,即使使用该修复程序,在目录中包含大量数据也会使getTypeNames
非常慢,因此如果可能,您应该避免使用它。
答案 1 :(得分: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
当我构建没有更改时,它构建好,没有任何错误
感谢。