1

我有一个包含日志数据的存储桶 b1。现在我正在尝试通过添加添加二级索引将它们复制到新存储桶中。在旧存储桶中,每个条目都有 60 个块的 JSON。我希望每个块都作为新存储桶中的新条目写入。

我使用了 riak java 客户端,从旧存储桶中读取每个条目,解析 JSON 并通过添加 secIndex 对新存储桶进行 60 次写入调用 [json 中的每个块一个]。这工作得很好。但是整个过程真的很慢,我的旧存储桶有近 1000 万个条目。

有没有更有效的方法来做到这一点

4

1 回答 1

2

一种可能加快速度(但也会给集群带来大量负载)的方法是开发一两个自定义映射和/或缩减阶段函数,并将拆分和插入作为一个大型映射缩减作业的一部分执行。可以通过例如使用密钥过滤将其分成几个较小的任务。

由于您需要访问内部 Riak 客户端才能插入新记录,因此这些函数(至少插入函数)需要在 Erlang 中开发,因为目前无法从 JavaScript 执行插入。

这需要一些时间来开发和测试,所以如果这是一次性的活动(听起来像是),它可能不值得。

如果您还没有这样做,您最好尝试对数据进行分区并尝试在多个并行流中执行迁移。

于 2012-10-24T18:54:00.430 回答