Ошибка в именах таблиц geomesa-hbase/geoserver

Я разрабатываю геосервер с помощью hbase geomesa, но когда я создаю новое хранилище данных, у меня возникают проблемы с bigtable.table.name.

Проблема в том, что имя всех моих таблиц похоже на это 'published.cityos.fonts', но когда я сохраняю магазин, мне выдает такую ​​ошибку

Ошибка создания хранилища данных, проверьте параметры. Сообщение об ошибке: индекс строки вне допустимого диапазона: -1

Я продублировал таблицу, чтобы провести тест, и назвал ее так: «cityos.fonts», и я не получаю никаких ошибок.

Можно ли решить проблему без дублирования и переименования 100 таблиц?

Заранее большое спасибо.

Ошибка в консоли:

ПРЕДУПРЕЖДЕНИЕ [data.store] — Ошибка при получении нового хранилища данных java.io.IOExceptionç Вызвано: java.lang.StringIndexOutOfBoundsException: индекс строки вне диапазона: -1 в java.lang.String.substring(неизвестный источник) в org.locationtech .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) в scala.collection.Iterator$$anon$11.next(Iterator.scala:370) в 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(Travers ableOnce.scala:296) в org.locationtech.geomesa.utils.collection.CloseableIterator$$anon$2.toSeq(CloseableIterator.scala:34) в org.locationtech.geomesa.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.vfny .geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:97) в org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:649)


person Navo    schedule 30.01.2018    source источник
comment
Чтобы сузить проблему, какую версию GeoMesa вы используете? Я считаю, что ошибка возникает из-за строк в таблице, а не из-за самого имени таблицы ... не могли бы вы отсканировать две таблицы (одну, которая работает, и другую, которая не работает) в оболочке hbase и опубликовать результаты здесь?   -  person Emilio Lahr-Vivaz    schedule 30.01.2018


Ответы (2)


Я думаю, что проблема не в именах таблиц, а в дополнительных данных в первой таблице. GeoMesa ожидает, что таблица каталога будет содержать только метаданные простого типа объектов. Чтобы определить простые типы объектов в данном каталоге, GeoMesa сканирует таблицу и использует регулярное выражение для извлечения имени типа из значений строки. Например, abastament_agbarType~attributes указывает, что имя типа abastament_agbarType. Исходная таблица содержит много строк, отличных от GeoMesa, что приводит к сбою регулярного выражения строк.

Я создал тикет для отслеживания проблемы здесь. Мы можем добавить try/catch и вывести предупреждение о недопустимых строках. Однако даже с этим исправлением наличие большого количества данных в каталоге сделает getTypeNames очень медленным, поэтому, если возможно, вам следует избегать этого.

person Emilio Lahr-Vivaz    schedule 30.01.2018
comment
Я разместил PR для исправления здесь, если вы хотите попробовать применить его к 1.3.5 и сборка из исходников. - person Emilio Lahr-Vivaz; 30.01.2018
comment
Спасибо большое сейчас попробую. - person Navo; 31.01.2018

После внесения изменений...

Когда я пытаюсь собрать из исходников и добираюсь до части 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 чистая установка -DskipTests -Dcheckstyle.skip

Когда я строю без изменений, он строится нормально, без ошибок.

Спасибо.

person Navo    schedule 31.01.2018
comment
Решено, сделал все изменения заново и теперь компилируется, сейчас попробую. - person Navo; 31.01.2018