使用 Hadoop 映射两个数据集

2024-05-02

假设我有两个键值数据集——数据集A和B,我们称它们为数据集A和B。我想用 B 组的数据更新 A 组中的所有数据,其中两者在键上匹配。

因为我要处理如此大量的数据,所以我使用 Hadoop 进行 MapReduce。我担心的是,为了在 A 和 B 之间进行密钥匹配,我需要将所有 A 集(大量数据)加载到每个映射器实例的内存中。这看起来效率相当低。

是否有推荐的方法可以做到这一点,而不需要每次都重复在 A 中加载的工作?

一些伪代码来澄清我目前正在做什么:

Load in Data Set A # This seems like the expensive step to always be doing
Foreach key/value in Data Set B:
   If key is in Data Set A:
      Update Data Seta A

根据文档,MapReduce框架包括以下步骤 http://hadoop.apache.org/docs/r1.0.3/mapred_tutorial.html#Payload:

  1. Map
  2. 排序/分区
  3. 合并(可选)
  4. Reduce

您已经描述了执行连接的一种方法:将所有集合 A 加载到每个映射器的内存中。你是对的,这是低效的。

相反,请观察到,如果两个集合都按键排序和分区,则大型连接可以分为任意多个较小的连接。 MapReduce 在上面的步骤(2)中按键对每个 Mapper 的输出进行排序。然后按键对排序后的 Map 输出进行分区,以便为每个Reducer 创建一个分区。对于每个唯一键,Reducer 将接收来自 Set A 和 Set B 的所有值。

要完成连接,Reducer 只需要输出键和集合 B 中的更新值(如果存在);否则,输出 Set A 中的键和原始值。要区分 Set A 和 Set B 中的值,请尝试在 Mapper 的输出值上设置一个标志。

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

使用 Hadoop 映射两个数据集 的相关文章

  • Amazon MapReduce 日志分析最佳实践

    我正在解析 Apache Nginx Darwin 视频流服务器 生成的访问日志 并按日期 引用者 用户代理聚合每个交付文件的统计信息 每小时都会生成大量日志 而且这个数字在不久的将来可能会急剧增加 因此通过 Amazon Elastic
  • Hive(查找连续 n 列中的最小值)

    我在 Hive 中有一个表 有 5 列 即电子邮件 a first date b first date c first date d first date a b c d 是用户可以执行的 4 个不同操作 上表中的 4 列表示用户执行第一个
  • Hadoop:处理大型序列化对象

    我正在开发一个应用程序来使用 Hadoop 框架处理 和合并 几个大型 java 序列化对象 顺序 GB 大小 Hadoop 存储将文件块分布在不同的主机上 但由于反序列化需要所有块都存在于单个主机上 因此它会极大地影响性能 我该如何处理这
  • 将 hadoop fs 路径转换为 ​​EMR 上的 hdfs:// 路径

    我想知道如何将数据从 EMR 集群的 HDFS 文件系统移动到 S3 存储桶 我认识到我可以直接在 Spark 中写入 S3 但原则上 之后执行它也应该很简单 到目前为止 我还没有发现在实践中这是正确的 AWS 文档建议s3 dist cp
  • HDP 3.1.0.0-78 升级后无法使用 ResourceManager UI 终止 YARN 应用程序

    我最近将 HDP 从 2 6 5 升级到 3 1 0 它运行 YARN 3 1 0 并且我无法再使用旧的 8088 cluster apps 或新的 8088 从 YARN ResourceManager UI 终止应用程序 ui2 ind
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • 2017 年在 OS X 上从源代码构建 Apache Hadoop

    到目前为止 我已经分叉了 Git 存储库 https github com apache hadoop 我一直在寻找有关如何从源代码构建的信息 我尝试过以下命令 mvn package Pdist Dtar DskipTests 这导致了以
  • Python - Map/Reduce - 如何在使用 DISCO 计数单词示例中读取 JSON 特定字段

    我正在按照 DISCO 示例来计算文件中的单词数 将单词数作为 Map Reduce 作业 http discoproject org doc disco start tutorial html 我对此工作没有任何问题 但是我想尝试从包含
  • Spark scala - 按数组列分组[重复]

    这个问题在这里已经有答案了 我对 Spark Scala 很陌生 感谢你的帮助 我有一个数据框 val df Seq a a1 Array x1 x2 a b1 Array x1 a c1 Array x2 c c3 Array x2 a
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • http://localhost:50070/ 的 hadoop Web UI 不起作用

    命令 jps 显示以下详细信息 第5144章 5464 节点管理器 5307 资源管理器 5800 Jps 显然namenode和datanode丢失了 网络用户界面位于http 本地主机 50070 http localhost 5007
  • 将日期字符串转换为“MM/DD/YY”格式

    我刚刚看到这个例子 我该如何解决这个问题 Hive 元存储包含一个名为 Problem1 的数据库 其中包含一个名为 customer 的表 customer 表包含 9000 万条客户记录 90 000 000 每条记录都有一个生日字段
  • 从 Eclipse 在 AWS-EMR 上运行 MapReduce 作业

    我在 Eclipse 中有 WordCount MapReduce 示例 我将其导出到 Jar 然后将其复制到 S3 然后我在 AWS EMR 上运行它 成功地 然后 我读到了这篇文章 http docs aws amazon com El
  • hive创建表的多个转义字符

    我正在尝试将带有管道分隔符的 csv 加载到配置单元外部表 数据值包含单引号 双引号 括号等 使用 Open CSV 版本 2 3 测试文件 csv id name phone 1 Rahul 123 2 Kumar s 456 3 Nee
  • mongodb - 检索数组子集

    看似简单的任务对我来说是一个挑战 我有以下 mongodb 结构 services TCP80 data status 1 delay 3 87 ts 1308056460 status 1 delay 2 83 ts 1308058080
  • 如何通过sparkSession向worker提交多个jar?

    我使用的是火花2 2 0 下面是我在 Spark 上使用的 java 代码片段 SparkSession spark SparkSession builder appName MySQL Connection master spark ip
  • 如何使用 Amazon 的 EMR 在 CLI 中使用自定义 jar 指定 mapred 配置和 java 选项?

    我想知道如何指定mapreduce配置 例如mapred task timeout mapred min split size等等 当使用自定义 jar 运行流作业时 当我们使用 ruby 或 python 等外部脚本语言运行时 我们可以使
  • hive 从两个数组创建映射或键/值对

    我有两个具有相同数量值的数组 它们映射为 1 1 我需要从这两个数组创建一个键 值对或映射 键 值 任何想法或提示都会有帮助 当前表结构 USA WEST NUMBER Street City 135 Pacific Irvine USA
  • 伪分布式模式下的 Hadoop。连接被拒绝

    P S 请不要将此标记为重复 Hi 我一直在尝试以伪分布式模式设置和运行 Hadoop 当我运行 start all sh 脚本时 我得到以下输出 starting namenode logging to home raveesh Hado
  • 在映射器的单个输出上运行多个减速器

    我正在使用地图缩减实现左连接功能 左侧有大约 6 亿条记录 右侧有大约 2300 万条记录 在映射器中 我使用左连接条件中使用的列来创建键 并将键值输出从映射器传递到减速器 我遇到性能问题 因为两个表中的值数量都很高的映射器键很少 例如分别

随机推荐

  • Facebook Stream.publish 带有来自 Base64 的图像附件

    我正在尝试让 facebook 的stream publish 制作一个墙贴 其中包含一些自定义文本和从该网站动态生成的图像 该图像仅以 Base64 形式提供 因为它是由用户在启动发布操作之前绘制的 Facebook 似乎不喜欢 src
  • 如何在半屏上呈现 ViewController

    我有一个UIViewController其中只有一个UIView从底部覆盖了 viewController 的 1 3 像这样 我想在另一个 ViewController 上呈现这个 viewController 它应该从底部动画显示 并且
  • CSS 可见性动画不起作用

    我想在 CSS 可见性属性上制作基于关键帧的动画 我最初在 显示 上尝试过 但发现不支持 显示 上的动画 但支持 可见性 这个想法是让矩形的可见性不断切换 我不想使用 jquery 并且想在 CSS 中实现整个它 以下是我的代码 但它没有给
  • Java Marine API - 寻找 NMEA 数据

    我的最终目标是从 Adafruit Ultimate GPS NMEA 0183 标准 接收纬度和经度 GPS 信息到我的 Java 应用程序 我正在使用 Java Marine API 来执行此操作 然后 当前位置将与时间戳一起写入数据库
  • Ionic 4 键盘覆盖输入字段

    我有一个 Ionic 4 应用程序 其中有一个包含输入的表单 当用户单击输入时 它会打开键盘 但会隐藏内容 而不滚动 有没有办法解决 这是我的代码
  • 如何在iPhone真机上打开数据库sqlite文件?

    我正在通过电缆在我的真实设备中调试应用程序 我有一部 iPhone 6 我想检查我的数据库并使用 sqlite3 操作来查询我的结果 其他问题和教程解释了只能在模拟器中执行此操作 但我使用的是真正的 iPhone 在AppDelegate中
  • MySQL:错误 1215 (HY000):无法添加外键约束

    我读过了数据库系统概念 第六版 西尔伯沙茨 我将在 OS X 上的 MySQL 上实现第 2 章中所示的大学数据库系统 但我在创建表格时遇到了麻烦course 桌子department好像 mysql gt select from depa
  • Swing JTable:当行可见或滚动到底部时发生事件?

    我正在寻找一种方法 以便在 JTable 滚动时收到通知 以便特定行变得可见 或者在表底部滚动到视图中时失败 理想情况下 这应该在不轮询的情况下完成 而是通过一些事件触发来完成 有任何想法吗 Add a ChangeListener到滚动窗
  • Jquery 手风琴默认不折叠

    我正在使用 bootstrap 提供的折叠插件 这是一个 jquery 简单插件 但是它默认折叠 如何修改以使折叠项默认隐藏 只有当我按下标题时 该项目才会折叠并显示 谢谢 插件的文档 只有几行 所以只需要一分钟 http twitter
  • 从命令行更新具有固定依赖项的 npm 包

    我有一个带有更新的固定版本的 npm 包 package json 摘录示例 devDependencies someFixedVersionPackage 1 0 0 1 1 0 is latest anotherFixedVersion
  • mean.io - 错误:“请求实体太大”。如何在meanio模块之外增加bodyParser限制?

    我在mean io 应用程序中收到以下错误 Error request entity too large 为了解决这个问题 我在以下位置增加了meanio模块中的bodyParser限制 node modules meanio lib co
  • Selenium:从文本框中删除内容

    通过硒 如何从文本框中删除内容 我必须使用 selenium 命令从文本框中删除最后 2 个字符 例如ABCD 到AB 尝试这个 selenium type text box object ABCD selenium typeKeys te
  • 带有无序列表的 Flexbox

    我正在尝试学习 Flexbox 我真的很喜欢它 我正在尝试 玩动态宽度 当我这样做时div它有效 如果我尝试这样做li 它也不起作用 我的代码已上线codepen http codepen io jrock2004 pen pjvZJd d
  • 如何展开和折叠列表视图中的项目

    我对安卓还很陌生 我想实现一个列表视图 它包含一些列表项 当单击它们时 它们应该展开以显示更多信息 但我找不到办法做到这一点 这是我的activity main xml
  • jtree 编程式多选

    是否能够以编程方式选择 JTree 中的多个树节点 我已经设置了多选模式tree getSelectionModel setSelectionMode TreeSelectionModel DISCONTIGUOUS TREE SELECT
  • Vue.js 严格模式下不允许对一个属性进行多个定义

    再会 我们正在使用 Vuejs Vuex vue router 构建我们的应用程序https github com vuejs vue hackernews 2 0 https github com vuejs vue hackernews
  • 通过变量引用工作簿和工作表

    引用不同工作簿的工作表的正确语法是什么 以下代码在最后一行抛出错误 谢谢 Instantiate Workbook variables Dim mWB As Workbook master workbook Instantiate Work
  • 我无法从指向派生类的指针和指向基类的指针的指针进行分配? [复制]

    这个问题在这里已经有答案了 可能的重复 派生 到基础 之间的转换 https stackoverflow com questions 8026040 conversion between derived to base 在主要使用 Pyth
  • OpenRasta - Scott Littlewoods 基本身份验证工作示例

    我正在测试使用 OpenRasta 作为 ASP NET MVC 的可行替代方案的可行性 但是 我遇到了有关身份验证的绊脚石 让我明确一点 开放式摘要身份验证 不是一个选项在此刻 我读到 Scott Littlewood 为 OpenRas
  • 使用 Hadoop 映射两个数据集

    假设我有两个键值数据集 数据集A和B 我们称它们为数据集A和B 我想用 B 组的数据更新 A 组中的所有数据 其中两者在键上匹配 因为我要处理如此大量的数据 所以我使用 Hadoop 进行 MapReduce 我担心的是 为了在 A 和 B