как получить данные пакетом из hbase в Geomesa?

API-интерфейс GeoTools — это один из способов получения данных из Hbase методом загрузки Geomesa, но когда я использую org.geotools.data.simple.SimpleFeatureCollection, кажется, что SimpleFeatureCollection.features() может управлять только Iterator, возникает одна проблема, в которой когда я хочу просмотреть результаты, метод iterator.hasNext() требует слишком много времени. Могу ли я получить данные пакетным способом из hbase в Geomesa не только с помощью Iterator?


person luway    schedule 23.11.2018    source источник


Ответы (1)


За кулисами выполняется некоторая пакетная обработка, но пакеты извлекаются лениво (т. е. при вызове hasNext, если нет никаких локальных данных, он выполняет удаленную выборку). Упреждающим чтением HBase можно управлять с помощью системного свойства geomesa.hbase.client.scanner.caching.size (см. здесь). Однако API GeoTools не предоставляет каких-либо пакетных механизмов.

Для простых случаев использования, если вы просто хотите получить все заранее, вы можете поместить итератор в ArrayList, а затем работать с ним. Чтобы избежать ожидания получения всего набора результатов, вы можете настроить потоки производитель/потребитель, чтобы один поток непрерывно выполнял предварительную выборку данных, а второй поток работал с полученными результатами.

Для более продвинутых вариантов использования вы можете использовать Spark (или map/reduce напрямую), чтобы сразу загрузить весь набор результатов.

person Emilio Lahr-Vivaz    schedule 26.11.2018