如何用hadoop实现自连接/叉积?

2024-03-15

对成对的项目进行评估是常见的任务: 示例:重复数据删除、协同过滤、相似项目等 这基本上是具有相同数据源的自连接或叉积。


要进行自连接,您可以遵循“减少端连接”模式。映射器将连接/外键作为键发出,将记录作为值发出。

因此,假设我们想要对以下数据的“城市”(中间列)进行自连接:

don,baltimore,12
jerry,boston,19
bob,baltimore,99
cameron,baltimore,13
james,seattle,1
peter,seattle,2

映射器将发出键->值对:

(baltimore -> don,12)
(boston -> jerry,19)
(baltimore -> bob,99)
(baltimore -> cameron,13)
(seattle -> james,1)
(seattle -> peter,2)

在减速器中,我们会得到:

(baltimore -> [(don,12), (bob,99), (cameron,13)])
(boston -> [(jerry,19)])
(seattle -> [(james,1), (peter,2)])

从这里,您可以执行内部连接逻辑(如果您愿意)。为此,您只需将每个项目与其他每个项目进行匹配即可。为此,请将数据加载到数组列表中,然后对项目执行 N x N 循环以相互比较。

意识到减少端连接的成本很高。如果您不过滤掉任何内容,它们会将几乎所有数据发送到减速器。另外,将数据加载到化简器的内存中时要小心——通过加载数组列表中的所有数据,您可能会在热连接键上耗尽堆。


上面的内容与典型的reduce-side join 有点不同。连接两个数据集时的想法是相同的:外键是键,记录是值。唯一的区别是这些值可能来自两个或更多数据集。您可以使用MultipleInputs http://hadoop.apache.org/common/docs/r1.0.3/api/org/apache/hadoop/mapreduce/lib/input/MultipleInputs.html让不同的映射器解析不同的输入集,然后让减速器从两者收集数据。


在没有任何约束的情况下,交叉产品是一场噩梦。 IE。,

select * from tablea, tableb;

有多种方法可以做到这一点。它们都不是特别有效。如果您想要这种类型的行为,请给我留言,我会花更多时间解释实现此目的的方法。

如果您能找出某种连接键(这是相似性的基本键),那么您的情况就会好得多。


我的书的插头:MapReduce 设计模式 http://shop.oreilly.com/product/0636920025122.do。它应该在几个月内发布,但如果您真的感兴趣,我可以通过电子邮件将有关连接的章节发送给您。

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

如何用hadoop实现自连接/叉积? 的相关文章

  • Hive ParseException - 无法识别“结束”“字符串”附近的输入

    尝试从现有 DynamoDB 表创建 Hive 表时出现以下错误 NoViableAltException 88 at org apache hadoop hive ql parse HiveParser IdentifiersParser
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • 为什么组合器输入记录的数量比映射的输出数量多?

    Combiner 在 Mapper 之后 Reducer 之前运行 它将接收给定节点上的 Mapper 实例发出的所有数据作为输入 然后它将输出发送到Reducers 因此组合器输入的记录应小于映射输出的记录 12 08 29 13 38
  • 在 Hadoop 中按文件中的值排序

    我有一个文件 其中每行包含一个字符串 然后是一个空格 然后是一个数字 例子 Line1 Word 2 Line2 Word1 8 Line3 Word2 1 我需要按降序对数字进行排序 然后将结果放入文件中 为数字分配排名 所以我的输出应该
  • 使用 Hadoop 映射两个数据集

    假设我有两个键值数据集 数据集A和B 我们称它们为数据集A和B 我想用 B 组的数据更新 A 组中的所有数据 其中两者在键上匹配 因为我要处理如此大量的数据 所以我使用 Hadoop 进行 MapReduce 我担心的是 为了在 A 和 B
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • Spark 上的 Hive 2.1.1 - 我应该使用哪个版本的 Spark

    我在跑蜂巢2 1 1 Ubuntu 16 04 上的 hadoop 2 7 3 根据Hive on Spark 入门 https cwiki apache org confluence display Hive Hive on Spark
  • R+Hadoop:如何从HDFS读取CSV文件并执行mapreduce?

    在以下示例中 small ints to dfs 1 1000 mapreduce input small ints map function k v cbind v v 2 MapReduce函数的数据输入是一个名为small ints的
  • 获取行 HBase 的特定列族中的列

    我正在编写一个应用程序 通过 JSP 显示 HBase 中特定表中的数据 我想获取一行的特定列族中的所有列 有什么办法可以做到这一点吗 public String getColumnsInColumnFamily Result r Stri
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • 带有安全 Kafka 抛出的 Spark 结构化流:无权访问组异常

    为了在我的项目中使用结构化流 我正在 hortonworks 2 6 3 环境上测试 Spark 2 2 0 和 Kafka 0 10 1 与 Kerberos 的集成 我正在运行下面的示例代码来检查集成 我能够在 Spark 本地模式下的
  • Hive“添加分区”并发

    我们有一个外部 Hive 表 用于处理原始日志文件数据 这些文件每小时一次 并按日期和源主机名分区 目前 我们正在使用简单的 python 脚本导入文件 这些脚本每小时触发几次 该脚本根据需要在 HDFS 上创建子文件夹 从临时本地存储复制
  • HDFS 中的文件数量与块数量

    我正在运行单节点 hadoop 环境 当我跑的时候 hadoop fsck user root mydatadir block 我真的对它给出的输出感到困惑 Status HEALTHY Total size 998562090 B Tot
  • Flume将数据从MySQL迁移到Hadoop

    请分享您的想法 需求是将MySQL db中的数据迁移到Hadoop HBase进行分析 数据应该实时或接近实时地迁移 Flume可以支持这个吗 有什么更好的方法 据我了解 Flume 并不是为此而设计的 Flume 基本上用于读取日志 如数
  • Pig 10.0 - 将元组分组并在 foreach 中合并包

    我在用着Pig 10 0 我想在 foreach 中合并包 假设我有以下内容visitors alias a b 1 2 3 4 a d 1 3 6 a e 7 z b 1 2 3 我想对第一个字段上的元组进行分组 并将包与一组语义合并以获
  • pyspark.sql.utils.AnalysisException:u'Path不存在

    我正在使用标准 hdfs 与 amazon emr 运行 Spark 作业 而不是 S3 来存储我的文件 我在 hdfs user hive warehouse 有一个配置单元表 但当我的 Spark 作业运行时找不到它 我配置了 Spar
  • Spark 写入 hdfs 无法使用 saveAsNewAPIHadoopFile 方法

    我在 CDH 5 2 0 上使用 Spark 1 1 0 并试图确保我可以读取和写入 hdfs 我很快意识到 textFile 和 saveAsTextFile 调用旧的 api 并且似乎与我们的 hdfs 版本不兼容 def testHD
  • Talend 和 Apache Spark?

    我对 Talend 和 Apache Spark 在大数据生态系统中的定位感到困惑 因为 Apache Spark 和 Talend 都可以用于 ETL 有人可以用一个例子解释一下吗 Talend 是一种基于工具的大数据方法 通过内置组件支
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob

随机推荐

  • CakePHP 通过 Auth 记住我

    我已经成功使用了 Auth 但不幸的是 它似乎只适用于 Session 我希望如果用户选中 记住我 复选框 我将使用 Cookie 并且他将登录 2 周 我在官方书籍中找不到任何内容 在谷歌中我只找到了很少而且不是很好的博客文章 有没有办法
  • 领域驱动设计和 IoC/依赖注入

    我现在正在尝试应用我学到的有关 DDD 的知识 但我对域模型中的依赖关系流有点困惑 我的问题是 实体是否应该了解域中的工厂 存储库 服务 存储库应该了解域中的服务吗 另一件困扰我的事情是当我想向集合添加实体时如何处理集合 假设我正在开发一个
  • 如何使用 Owin Katana 记录器

    我在 Microsoft Owin 项目中的此类文件中看到正在调用记录器 https github com aspnet AspNetKatana blob dev src Microsoft Owin Security OpenIdCon
  • 分割字符串并修剪每个元素

    是否有任何库 API 或正则表达式模式可以在某些分隔符上拆分字符串并自动修剪每个元素的前导和尾随空格 而无需循环元素 例如 在分割时 A B C D E on 所需的输出是 A B C D E 我得到的最接近的是str split s s
  • 如何在创建帐户时向用户分配角色

    我正在使用 ASP NET 内置成员资格和角色提供程序 在我的应用程序中 管理员为用户创建帐户 目前我正在通过访问 ASP NET 配置网站来分配角色 请告诉我如何在创建用户帐户 API 中添加选择角色的额外步骤 Thanks 您只是问如何
  • 429 请求太多 - Angular 7 - 多个文件上传

    当我尝试同时上传数百个以上的文件时 我遇到了这个问题 API 接口仅适用于一个文件 因此我必须调用发送每个文件的服务 现在我有这个 onFilePaymentSelect event void if event target files l
  • 当我使用模板时,我的文字方向写错了

    我想使用 Rails 在现有 PDF 上添加文本 所以我这样做了 filename Rails root app assets images sample pdf Prawn Document generate Rails root app
  • 选择器无效:xpath 表达式“//*[@id='topstuff']/div/div/p[1]/text()[2]”的结果是:使用 XPath 和 Selenium 的 [object Text]

    我在理解如何执行此操作时遇到很多问题 我需要做的很简单 就是每当我的自动谷歌搜索无法找到任何搜索结果时进行标记 我的代码示例 driver webdriver Chrome executable path driver get https
  • VS2010无法添加服务引用

    我有一个最初是用 VS2008 专业 编写的项目 我已经从 VS2008 解决方案中的项目创建了一个 vs2010 解决方案 使用 VS2010 professional 但无法从解决方案的域层 类库项目 添加服务引用 我检查过域层项目的目
  • 从 azure 搜索返回仅与确切搜索词匹配的记录

    所以我是 Azure 搜索的新手 我才刚刚开始了解它 我有一个搜索索引 用于查询一个非常简单的 sql 视图以查找匹配的记录 我在获得与我搜索的单词完全匹配时遇到了很大的困难 每当我搜索时 我都会得到仅包含确切单词的记录 但是我也会得到包含
  • 如何让R使用更多的CPU和内存? [复制]

    这个问题在这里已经有答案了 无论 R 计算多么密集 它使用的 CPU 都不会超过 25 我尝试过设置优先级rsession exe to High乃至Realtime但用法保持不变 有什么方法可以增加 R 的 CPU 使用率以充分利用我的系
  • 语音转文本 - 将说话者标签映射到 JSON 响应中相应的文字记录

    每隔一段时间就会出现一段 JSON 数据 这会带来挑战 可能需要数小时才能从中提取所需的信息 我有以下由 Speech To Text API 引擎生成的 JSON 响应 它显示了文字记录 每个单词的发音以及每个说话者的时间戳和说话者标签s
  • 如何使用Eclipse + CDT + MinGW更改优化级别?

    我正在使用 Eclipse CDT MinGW 编写一些 C 代码 编译输出始终显示 Info Internal Builder is used for build gcc O0 g3 Wall c fmessage length 0 o
  • 文件对象中的 rb 和 r+b 模式有什么区别[重复]

    这个问题在这里已经有答案了 我在 Python 中使用 pickle 模块并尝试不同的文件 IO 模式 works on windows rb with open pickle f rb as fhand obj pickle load f
  • 如何在 ASP.NET 全球化中配置不变文化?

    我需要将 CurrentCulture 修复为 ASP NET 应用程序中的不变区域性 我怎样才能做到这一点
  • Solidity 中的状态变量是什么?

    我读过一些关于storage memory and view pure 但我并不完全理解它们 我有以下代码 contract struct Random uint32 state uint8 i function main pure int
  • 我可以结束asp.net mvc中视图的渲染吗

    所以我试图找出一种方法 如果我的模型为空 则可以呈现错误消息 并且在该错误消息之后视图应该停止渲染 这可能吗 我的第一个想法是 response end 方法 但主视图将无法完成渲染 这是框架的一部分 我们确实需要自己构建它吗 仅使用 re
  • float 无法转换为 'MirrorDisposition' Swift 什么是mirrordisposition?

    我得到以下代码 let floatValue Float 1 let intValue Int 1 if floatValue intValue println Types and value are equal else println
  • 使用 django 实现一个对请求进行计数的计数器

    我只是想和姜戈一起尝试 我如何实现一个计数器来存储数据库上服务的请求计数 我想统计 GET 请求的数量 我该怎么做才能让它工作 我的模板
  • 如何用hadoop实现自连接/叉积?

    对成对的项目进行评估是常见的任务 示例 重复数据删除 协同过滤 相似项目等 这基本上是具有相同数据源的自连接或叉积 要进行自连接 您可以遵循 减少端连接 模式 映射器将连接 外键作为键发出 将记录作为值发出 因此 假设我们想要对以下数据的