hadoop - map 与过滤器操作

标签 hadoop apache-spark mapreduce

在第 2 段的第 1 行中,Wiki ( https://en.wikipedia.org/wiki/MapReduce ) 说 map() 也应负责“过滤”。

然而,我的理解是 map() 应仅负责通过“转换”更改数据集的“形式”,而不负责“过滤”。

这条线令人困惑吗?

最佳答案

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

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

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

希望这能让它更清楚。

在引用 spark 的评论之后进行编辑。

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

这只是不幸的巧合,它们被称为相同的,因为 spark 在 map-reduce(或 yarn)复杂性之上分层了一个类似流的 API,传统上有一个 map()-function,这是一个来自函数式的概念编程。该映射函数也没有任何类似于发射步骤的内容。

因此:map-reduce 中的 map(除了 map 和 reduce 之外没有其他功能 - 检查您发布的链接中的示例)应该进行过滤。请注意,map-reduce 中的映射对于每个输入都有 0 .. n 个输出。

Spark 中的映射或其他类型的流式 API 应仅执行从一种类型到另一种类型的转换。 (一个输入导致一个输出。)

关于hadoop - map 与过滤器操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40459695/

相关文章:

hadoop - 如何通过sqoop将sql server中的表导入到hdfs

azure - 手动更改配置文件后,Ambari 是否会恢复配置?

postgresql - Spark Dataframes UPSERT 到 Postgres 表

apache-spark - spark hbase 连接器 - 异常 "java.lang.UnsupportedOperationException: empty.tail"

hadoop - 无效的作业 session 异常 : Output directory not set

hadoop - 以不同的用户身份运行 Pig 作业

linux - Hadoop 'cat'命令错误

python-2.7 - 如何运行egg分布式的pyspark应用程序?

join - Hadoop:是否可以将多个Map-Side连接在一起,似乎不是吗?

ruby-on-rails - 使用 map-reduce 进行视频转换