如何从geomesa中的hbase批量获取数据?

zphenhs4  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(465)

geotools api是geomesa ingest方法从hbase获取数据的一种方法,但是当我使用org.geotools.data.simple.simplefeaturecollection时,simplefeaturecollection.features()似乎只能操作迭代器,其中一个问题是,当我要遍历结果时,iterator.hasnext()方法花费了太多时间,我是否可以从geomesa的hbase中批量获取数据,而不仅仅是通过迭代器?

pcrecxhr

pcrecxhr1#

在幕后,有一些批处理正在进行,但是批处理是延迟获取的(即在调用 hasNext ,如果没有任何本地数据,它将执行远程获取)。您可以通过system属性控制hbase的预读 geomesa.hbase.client.scanner.caching.size (参见此处)。然而,geotoolsapi并不提供任何批处理机制。
对于简单的用例,如果您只想提前获取所有内容,可以将迭代器拉入arraylist,然后再对其进行操作。为了避免等待获取整个结果集,可以设置生产者/使用者线程,以便一个线程连续地预取数据,而第二个线程对返回的结果进行操作。
对于更高级的用例,可以使用spark(或直接Map/减少)一次加载整个结果集。

相关问题