多个输出路径(Java - Hadoop - MapReduce)

2024-01-01

我做了两项 MapReduce 作业,我希望第二项作业能够将结果写入两个不同目录中的两个不同文件中。 我想要某种类似于 FileInputFormat.addInputPath(.., multiple input path) 的东西,但对于输出。

我对 MapReduce 完全陌生,并且我有一个特殊性,就是在 Hadoop 0.21.0 中编写我的代码 我用context.write(..)在我的Reduce步骤中,但我不知道如何控制多个输出路径......

谢谢你的时间 !

我的第一份工作中的reduceCode,向您展示我只知道如何输出(它进入 /../part* 文件。但现在我想要的是能够为不同的输出指定两个精确文件,具体取决于钥匙) :

public static class NormalizeReducer extends Reducer<LongWritable, NetflixRating, LongWritable, NetflixUser> {
    public void reduce(LongWritable key, Iterable<NetflixRating> values, Context context) throws IOException, InterruptedException {
        NetflixUser user = new NetflixUser(key.get());
        for(NetflixRating r : values) {
            user.addRating(new NetflixRating(r));
        }
        user.normalizeRatings();
        user.reduceRatings();
        context.write(key, user);
    }
}

EDIT:所以我按照你提到的最后一条评论中的方法做了,阿马尔。我不知道它是否有效,我的 HDFS 还有其他问题,但在我忘记之前,为了文明,让我们把我的发现放在这里:

http://archive.cloudera.com/cdh/3/hadoop-0.20.2+228/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html http://archive.cloudera.com/cdh/3/hadoop-0.20.2+228/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

  • MultipleOutputs 不能代替 FormatOutputFormat。您可以使用 FormatOutputFormat 定义一个输出路径,然后可以使用多个 MultipleOutputs 添加更多输出路径。
  • addNamedOutput方法:字符串namedOutput只是一个描述的单词。
  • 您实际上在 write 方法中定义路径,即 String baseOutputPath arg。

所以我按照你提到的最后一条评论中的方法做了,阿马尔。我不知道它是否有效,我的 HDFS 还有其他问题,但在我忘记之前,为了文明,让我们把我的发现放在这里:

http://archive.cloudera.com/cdh/3/hadoop-0.20.2+228/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html http://archive.cloudera.com/cdh/3/hadoop-0.20.2+228/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

MultipleOutputs 不能代替 FormatOutputFormat。您可以使用 FormatOutputFormat 定义一个输出路径,然后可以使用多个 MultipleOutputs 添加更多输出路径。 addNamedOutput方法:字符串namedOutput只是一个描述的单词。 您实际上在 write 方法中定义路径,即 String baseOutputPath arg。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个输出路径(Java - Hadoop - MapReduce) 的相关文章

随机推荐

  • _users数据库不存在

    我克隆了一些人的网络应用程序 并尝试运行他们提供的 js 脚本来从数据库中提取数据 虽然我可以顺利地运行整个项目 但这个特定的脚本会产生错误 CouchError not found Database does not exist at R
  • Django,内容安全策略指令

    我正在尝试使用以下命令将 font awesome 导入到我的应用程序中 这会在 JS 控制台中返回以下错误 拒绝加载样式表 http maxcdn bootstrapcdn com font awesome 4 3 0 css font
  • cp:之后缺少目标文件操作数

    我正在尝试进行完整备份并将所有文件从一个目录复制到另一个目录 bin bash getting files from this directory PROJECTDIRECTORY Project3 Copied to this direc
  • 列表视图中的图像在视图之外时不会从内存中释放

    我正在垂直显示来自互联网的图像ListView 我使用获取图像http get 不使用缓存的网络图像 因为我不想缓存图像 然后我插入图像Uint8List into image memory 发生的情况是 当用户滚动列表并且加载图像时 内存
  • 如何将包含两个项目的解决方案部署到Azure App Service?

    我正在尝试最大限度地降低在 Azure 应用服务中运行 Web 应用程序的成本 我有一个包含两个 Web 项目的 Visual Studio 2017 解决方案 Web 和 API 均为 NET Core 整个解决方案是单个 GitHub
  • 如何替换 php 中已弃用的 set_magic_quotes_runtime ?

    当我尝试运行我必须使用但没有编写的 php 脚本时 我收到此消息 Deprecated Function set magic quotes runtime is deprecated in opt lampp htdocs webEchan
  • Bambuser ffmpeg - “arm-linux-androideabi-gcc 无法创建可执行文件。”

    我知道这可能与某些问题重复 但这些线程的答案对我没有帮助 我正在尝试使用 Bambuser 的 ffmpeg 为 Android 编译 ffmpeg 库 我下载了客户端版本 1 3 7 至 1 6 0 的存档 http bambuser c
  • 如何使用Resources.resx链接图像

    我在 Resources resx 中包含了一个图标文件 我希望将其显示在堆栈面板内的 TreeViewItem 上 1 ico 文件可以用于此目的吗 还是必须是 bmp 或 jpg 2 在XAML中你如何设置源 以下代码对我不起作用
  • shell_plus 安装 Django 时出现错误 - ImportError: 无法导入名称 'Type

    安装 django extensions 后尝试启动 shell plus 时出现以下错误 这是我遵循的步骤 1 使用安装的 django extensions pip install django extensions 2 Added d
  • Mathematica 中具有两个数据集的 ListPlot

    假设我有理由保持数据集独立 是否有更干净的方法来执行以下操作 x 1 2 3 y 1 4 9 ListPlot Partition Riffle x y 2 Thanks 我不认为蒂莫的解决方案是标准的 这里有两种方法 使用Transpos
  • 是否对 BeanCreationException / ApplicationContext 加载问题有更友好的看法

    诊断弹簧接线问题通常涉及挖掘堆栈跟踪中的很长的消息 如下所示 Caused by org springframework beans factory BeanCreationException Error creating bean wit
  • 富文本编辑器[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想为网站构建一个富文本编辑器 我该
  • 留意 Wicket 的更新房产

    在我当前的项目中 我们需要实现一种让短信发送者通过上传属性文件来管理检票口消息 国际化的方法 另请参阅这个问题 管理国际化检票口应用程序 https stackoverflow com questions 5140429 administr
  • Visual Studio Code 显示“需要 Java 11 或更高版本才能运行。请下载并安装最新的 JDK”

    今天 Visual Studio Code 开始向我显示一个弹出窗口 需要 Java 11 或更高版本才能运行 请下载并安装最新的 JDK 我需要使用 JDK 8 在 Apache Beam 上工作 这是最后支持的版本 我一直在努力解决这个
  • 使用 JOOQ 查找 PostgreSQL 中时间戳(以秒为单位)之间的差异

    我需要使用 JOOQ 查找两个时间戳之间的差异 以秒为单位 我已经使用原始 SQL 查看了 StackOverflow 上的一些答案 但是我没有找到使用 JOOQ 实现它的方法 以下是我发现的一些使用原始 SQL 的解决方案 查找 Post
  • Stripe.js - 解决无法读取未定义的属性“stripeToken”

    我正在使用 Stripe 构建我的第一个基本 Express 应用程序Checkout 该应用程序呈现正确 但当我提交表单时 我在两个方面都收到错误stripeToken and stripeEmail 我不知道为什么它没有通过 有什么帮助
  • Android中如何获取对应的文件图标?

    每个文件类型都与其特定的相关联icon 现在如果我选择一些文件名 xxx那么我如何能够选择与关联的图标 xxx而不是未知文件的默认图标 原始问题 我怎样才能得到 txt or doc or png文件图标 比如我现在选择filename p
  • C# 反序列化 json

    我有如下 json data name 123 pwd 123 name 456 pwd 456 name 789 pwd 789 duration 5309 query myquery timeout 300 Using http jso
  • 如何配置Tomcat使用1个以上的CPU?

    我们有一个新的客户端 目前我们正在对具有 100 个并发 http 线程的生产类服务器进行压力测试 使用 Jmeter 问题是 即使我们有 2 个 Xeon 处理器 每个 CPU 有 4 个核心 总 共 8 个核心 我只能看到 tomcat
  • 多个输出路径(Java - Hadoop - MapReduce)

    我做了两项 MapReduce 作业 我希望第二项作业能够将结果写入两个不同目录中的两个不同文件中 我想要某种类似于 FileInputFormat addInputPath multiple input path 的东西 但对于输出 我对