表名geomesa-hbase / geoserver出错

时间:2018-01-30 12:52:26

标签: hbase geoserver datastore tablename geomesa

我正在使用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)

2 个答案:

答案 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

当我构建没有更改时,它构建好,没有任何错误

感谢。