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

时间:2018-11-23 01:07:49

标签: hbase geomesa

GeoTools api是Geomesa提取方法从Hbase获取数据的一种方法,但是当我使用org.geotools.data.simple.SimpleFeatureCollection时,似乎只有Iterator可以被SimpleFeatureCollection.features()操纵,这是一个问题发生这种情况时,当我想遍历结果时,iterator.hasNext()方法会花费太多时间,不仅可以通过Iterator以批量方式从Geomesa的hbase中获取数据吗?

1 个答案:

答案 0 :(得分:0)

在幕后,已经完成了一些批处理,但是批处理是延迟获取的(即,在调用hasNext时,如果没有任何本地数据,它将进行远程获取)。您可以通过系统属性geomesa.hbase.client.scanner.caching.size控制HBase的预读(请参见here)。但是,GeoTools API并未提供任何批处理机制。

对于简单的用例,如果您只是想先获取所有内容,则可以将迭代器放入ArrayList中,然后对其进行操作。为了避免等待整个结果集被获取,您可以设置生产者/消费者线程,以便一个线程不断地预取数据,而第二个线程对返回的结果进行操作。

对于更高级的用例,可以使用Spark(或直接映射/归约)一次加载整个结果集。