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