【问题标题】:how to fetch data in a batch from hbase in Geomesa?如何从 Geomesa 中的 hbase 批量获取数据?
【发布时间】:2018-11-26 22:01:57
【问题描述】:

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

【问题讨论】:

    标签: hbase geomesa


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      相关资源
      最近更新 更多