java - Hadoop MapReduce中更好的采样方式

标签 java hadoop mapreduce sampling

我要从输入数据集中获取20%的样本数据。

我想到了两种方法:

  • 最初从每个映射器发出20%的数据(单个映射器发出20%的数据)。
    随机排序和排序后,reducer会找到20%的mapper数据。(对Map和Reduce使用相同的过程)
  • 只需从mapper发出每一行,然后在Reducer中从总数据中找到20%的样本数据。(仅完成处理是Reducer)

  • 哪种方法更好?

    最佳答案

    我绝对会选择您的第一选择。我不确定为什么您需要 reducer 。只需在 map 阶段过滤掉20%,然后将其命名为“一日”即可。

    关于java - Hadoop MapReduce中更好的采样方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417007/

    相关文章:

    java - 如何使用 htmlParser 替换属性?

    java - 每次在 Java 中调用方法时,都会从 CSV 文件中读取新行

    java - 无法使用 '''gradle '''命令构建/组装grails项目找不到工件 'org.fusesource.jansi:jansi:1.11@jar'

    java - MapReduce Nutch 教程

    hadoop - Hadoop MapReduce 的目的

    python-3.x - 错误 : Python3. 4 -> java.lang.RuntimeException : PipeMapRed. waitOutputThreads():子进程失败,代码为 1

    java - 如何让 for 循环中的数组在每次运行时实际更改 for 循环的大小?

    macos - 在家搭建 Hadoop 集群(2PC)

    hadoop - Spark Controller通过ambari安装失败

    hadoop - hive.skewjoin.mapjoin.map.tasks 和 hive.skewjoin.mapjoin.min.split 的关系