映射与过滤操作

时间:2016-11-07 07:16:51

标签: hadoop apache-spark mapreduce

在第2段的第1行中,Wiki(https://en.wikipedia.org/wiki/MapReduce)表示map()应负责过滤"过滤"同样。

然而,我的理解是map()仅负责更改" Form"通过"转换"设置的数据集,而不是"过滤"。

那条线路令人困惑吗?

2 个答案:

答案 0 :(得分:4)

关于纯map-reduce(这个wiki所指的),在地图阶段过滤是要走的路:

  • 在 map-stage
  • 之前,您没有预处理
  • 你应该尽可能地减少数据,以减轻混乱和排序阶段的数据负担
  • 因此, map 是您需要应用业务逻辑过滤的地方

基本上,由于您只实现了map和reduce,您可能还会将其解释为:给定阶段map和reduce,在_map_中执行业务过滤,因为_reduce_中的过滤会通过群集发送大量不必要的数据。 / em>的

希望更清楚。

在评论引用spark之后编辑。

请注意,spark streaming API中的map() - 函数与map-reduce中的map-function完全不同。

只是不幸的巧合,他们被称为相同,因为火花层在地图上减少(或纱线)复杂性的流式API,传统上有一个map() - 函数,这是一个功能概念节目。那个map-function也没有沿着emit-step行的任何东西。

因此:map-reduce中的map(其中除了map之外没有其他函数并且reduce - 检查你发布的链接中的例子)应该进行过滤。请注意,map-reduce中的映射每个输入都有0 .. n个输出。

使用spark或其他类型的流API进行映射只需要从一种类型转换为另一种类型。 (一个输入导致一个输出。)

答案 1 :(得分:0)

地图,您传入一个函数,该函数为数组中的每个元素返回一个值。此函数的返回值表示what an element becomes in our new array

过滤器,您传入的函数将为每个元素返回true或false。如果您传递的函数对某个元素返回true,则that element is included in the final array