geotools api是geomesa ingest方法从hbase获取数据的一种方法,但是当我使用org.geotools.data.simple.simplefeaturecollection时,simplefeaturecollection.features()似乎只能操作迭代器,其中一个问题是,当我要遍历结果时,iterator.hasnext()方法花费了太多时间,我是否可以从geomesa的hbase中批量获取数据,而不仅仅是通过迭代器?
pcrecxhr1#
在幕后,有一些批处理正在进行,但是批处理是延迟获取的(即在调用 hasNext ,如果没有任何本地数据,它将执行远程获取)。您可以通过system属性控制hbase的预读 geomesa.hbase.client.scanner.caching.size (参见此处)。然而,geotoolsapi并不提供任何批处理机制。对于简单的用例,如果您只想提前获取所有内容,可以将迭代器拉入arraylist,然后再对其进行操作。为了避免等待获取整个结果集,可以设置生产者/使用者线程,以便一个线程连续地预取数据,而第二个线程对返回的结果进行操作。对于更高级的用例,可以使用spark(或直接Map/减少)一次加载整个结果集。
hasNext
geomesa.hbase.client.scanner.caching.size
1条答案
按热度按时间pcrecxhr1#
在幕后,有一些批处理正在进行,但是批处理是延迟获取的(即在调用
hasNext
,如果没有任何本地数据,它将执行远程获取)。您可以通过system属性控制hbase的预读geomesa.hbase.client.scanner.caching.size
(参见此处)。然而,geotoolsapi并不提供任何批处理机制。对于简单的用例,如果您只想提前获取所有内容,可以将迭代器拉入arraylist,然后再对其进行操作。为了避免等待获取整个结果集,可以设置生产者/使用者线程,以便一个线程连续地预取数据,而第二个线程对返回的结果进行操作。
对于更高级的用例,可以使用spark(或直接Map/减少)一次加载整个结果集。