使用javascript和python的单节点riakmapreduce

2024-09-30 03:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用javascript对Riak DB中的数据执行MapReduce作业。但陷入一开始,我无法理解它是如何返回价值的。你知道吗

client = riak.RiakClient()
query = client.add('user')
query.map("""
            function(v){
               var i=0;
               i++;
             return [i];
             }
         """)

for result in query.run():
    print "%s" % (result);

为了简单起见,我检查了上面的例子。你知道吗

这里的查询是bucket,用户在RiakDB中包含五组数据。 我认为map()返回一个值,但它返回一个值为5的数组,我认为这相当于RiakDB中的五组数据。你知道吗

1
1
1
1
1

在这里,为什么我只能返回数组?它独立地处理每个数据集,并为每个数据集返回。所以我想我有五个1。由于这个原因,当我在map()中处理提取的数据时,返回的结果会给我带来意想不到的结果。你知道吗

所以请给我一些建议。我认为这是基本的东西,但我不能得到它。我非常感谢你的帮助。你知道吗


Tags: 数据clientmapdb作业数组resultjavascript
1条回答
网友
1楼 · 发布于 2024-09-30 03:24:52

运行MapReduce作业时,映射阶段代码将发送到存储数据的vnodes,并针对数据中的每个值执行。结果数组被收集并传递到单个reduce阶段,该阶段还返回一个数组。如果有足够多的结果,reduce阶段可以运行多次,并将先前的reduce结果和一批map结果作为输入。你知道吗

事实上,你得到了5个结果,这意味着在你的桶中看到了5个键。map phase函数的实例之间没有共享的全局状态,因此每个实例都有一个独立的i,这就是为什么每个结果都是1。你知道吗

您可以尝试返回[v.key],这样每一个都有独特的内容,或者如果期望值很小,则可以返回[JSON.stringify(v)],这样就可以看到传递到映射的整个结构。你知道吗

您应该注意到,根据docs sitejavascript Map Reduce已经被正式弃用,因此您可能希望使用Erlang函数进行新的开发。你知道吗

相关问题 更多 >

    热门问题