我有一个包含日志数据的存储桶b1。现在我尝试通过添加添加二级索引将它们复制到新存储桶。在旧存储桶中,每个条目都具有60个块的JSON。我希望每个块都被写成新桶中的新条目。
我使用riak java客户端,从旧存储桶中读取每个条目,解析JSON并通过添加secIndex对新存储桶进行60次写入调用[json中的每个块一次]。这很好。但整个过程非常缓慢,我的旧桶已经有近1000万条。
有更有效的方法吗
答案 0 :(得分:2)
可能加速它的一种方法(但也会给集群带来很多负载)将是开发一个或两个自定义映射和/或减少阶段函数并执行拆分和插入作为一个大的一部分mapreduce工作。可以通过例如将其分成几个较小的任务。使用密钥过滤。
由于您需要访问内部Riak客户端以插入新记录,因此需要在Erlang中开发这些函数(至少是insert函数),因为目前无法从JavaScript执行插入。
这需要一些时间来开发和测试,所以如果这是一次性活动(听起来像),它可能不值得。
如果你还没有这样做,你可能最好尝试对数据进行分区并尝试在多个并行流中执行迁移。