对map reduce中的reduce函数的行为感到困惑

J·本德

我在以下地图上遇到问题,使用Python减少了Spark中的运动。我的地图函数返回以下RDD。

rdd = [(3,({0:[2],1:[5],3:[1]},set([2])))),
(3,({0:[4],1:[ 3],3:[5]},set([1]))),
(1,({0:[4,5],1:[2]},set([3)))]

我编写了一个reducer函数,该函数应该对具有相同键的元组进行一些计算(在前面的示例中,前两个键的键值为3,最后一个键为1)。

def Reducer(k, v):
 cluster = k[0]
 rows = [k[1], v[1]]
 g_p = {} 
 I_p = set()
 for g, I in rows:
     g_p = CombineStatistics(g_p, g)
     I_p = I_p.union(I)
 return (cluster, [g_p, I_p]) 

问题是我期望k和v始终具有相同的键(即k[0]==v[0])。但是此代码并非如此。

我正在Databricks平台上工作,说实话,这是无法调试的噩梦,有时甚至无法进行“打印”工作。在这种环境下工作真让人沮丧。

马里乌斯

如果要基于相同的密钥减少RDD,则应使用reduceByKey而不是reduce转换。替换函数名后,你应该考虑到的参数的reduceByKey函数是值(k[1]v[1]你的情况),而不是整个RDD行。

reducer函数内部的打印在数据块上的分布式环境中将不起作用,因为此函数是在执行程序(在亚马逊云内部)上评估的。如果您在本地模式下启动spark,则所有python打印都可以工作(但是我不确定databricks上是否可以使用本地模式)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

$(...).. map(...)。reduce不是函数

来自分类Dev

RavenDB map reduce,reduce中的重复条目

来自分类Dev

Map Reduce程序中的问题

来自分类Dev

Map Reduce中的关键值

来自分类Dev

对map :: emplace的语法感到困惑

来自分类Dev

Mongo / Java Map-Reduce函数-MongoCommandException

来自分类Dev

有什么方法可以检查mongo map reduce查询中的map函数输出吗?

来自分类Dev

完成MongoDB Map-Reduce中的步骤

来自分类Dev

完成MongoDB Map-Reduce中的步骤

来自分类Dev

spark reduce and map issue

来自分类Dev

RethinkDB Map / Reduce示例

来自分类Dev

Map-reduce 概念

来自分类Dev

对return array#map javascript感到困惑

来自分类Dev

如何在python中使用map,reduce,apply或其他函数转换DataFrame(在此示例中)?

来自分类Dev

使用普通 map/reduce 函数时如何访问 SparkDataset Api 中的 json 模式信息?

来自分类Dev

使用map reduce实施小组

来自分类Dev

节点中的Map-Reduce

来自分类Dev

Hadoop Map Reduce哈希程序

来自分类Dev

使用UnderscoreJS进行Map Reduce

来自分类Dev

mongo db的map reduce功能

来自分类Dev

使用reduce fnt代替map

来自分类Dev

Hadoop Map-Reduce编程

来自分类Dev

使用UnderscoreJS进行Map Reduce

来自分类Dev

MongoDB Map Reduce对象字段

来自分类Dev

使用map / reduce计算总数

来自分类Dev

在 Erlang 中用 Reduce 实现 Map

来自分类Dev

如何从聚合中的reduce或map中的文档字段声明变量?

来自分类Dev

如何在scala中编写hadoop map reduce程序

来自分类Dev

map-reduce中不同组件/动作的执行顺序