我认为您的问题围绕着reduce函数,这是2个参数返回1的函数,而在Reducer中,您实现了多对多函数。
如果不太通用,则此API更简单。在这里,您提供了一个关联 *** 作,该 *** 作可以将任意2个值减小为1(例如,两个整数总和为1)。这用于将每个键的所有值都减小为1。由于可以使用2对1函数来实现,所以不必提供N对1函数。在这里,您不能为一个键发出多个值。
结果是每个(键,一堆值)的(键,减值)。
实际上,经典Hadoop
MapReduce中的Mapper和Reducer都非常相似(只是每个键采用一组值而不是单个值),并允许您实现很多模式。以一种好的方式,以一种浪费和复杂的方式。
您仍然可以重现Mappers和Reducers的功能,但是Spark中的方法是mapPartitions,可能与groupByKey配对。这些是您可能考虑的最一般的 *** 作,我并不是说您
应该 在Spark中以这种方式模拟MapReduce。实际上,它不太可能有效。但是有可能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)