如何用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实现自连接/叉积? 的相关文章

  • Apache Spark 何时发生混洗?

    我正在优化 Spark 中的参数 并且想确切地了解 Spark 是如何对数据进行洗牌的 准确地说 我有一个简单的字数统计程序 并且想知道spark shuffle file buffer kb如何影响运行时间 现在 当我将此参数设置得非常高
  • MongoDB 存储过程等效项

    我有一个包含商店列表的大型 CSV 文件 其中一个字段是邮政编码 我有一个名为 ZipCodes 的独立 MongoDB 数据库 它存储任何给定邮政编码的纬度和经度 在 SQL Server 中 我将执行一个名为 InsertStore 的
  • Mapreduce shuffle 阶段出现内存不足错误

    我在运行时遇到奇怪的错误类似字数统计映射缩减程序 我有一个包含 20 个从站的 hadoop 集群 每个从站都有 4 GB RAM 我将 Map 任务配置为 300MB 堆 Reduce 任务槽为 1GB 我每个节点有 2 个映射槽和 1
  • 无法在 Presto 中读取数据 - 在 Hive 中可以读取数据

    我有一个 Hive DB 我创建了一个与 Parquet 文件类型兼容的表 CREATE EXTERNAL TABLE default table date date udid string message token string PAR
  • PyMongo 中的 MapReduce

    我的蒙戈收藏 Impressions具有以下格式的文档 uid 10 impressions pos 6 id 123 service furniture pos 0 id 128 service electronics pos
  • 在 RavenDB 中创建更多类似的内容

    我的域中有这些文档 public class Article public string Id get set some other properties public IList
  • 全部配对图表上的所有路径

    这可能是一个没有最佳解决方案的问题 假设我有一个有向图 不知道它是否有循环 循环检测将是这个问题的方面之一 给定一组顶点 可能是数百万个顶点 我需要计算给定图的所有唯一对之间的所有不同路径 没有重复顶点的路径 我该如何应对这种情况 让我们看
  • 错误 hive.HiveConfig:无法加载 org.apache.hadoop.hive.conf.HiveConf。确保 HIVE_CONF _DIR 设置正确

    我正在尝试将数据从 sqoop 导入到 hive MySQL use sample create table forhive id int auto increment firstname varchar 36 lastname varch
  • 在 Apache Spark 上下文中,内存数据存储意味着什么?

    我读到 Apache Spark 将数据存储在内存中 然而 Apache Spark 旨在分析大量数据 又称大数据分析 在这种情况下 内存数据存储的真正含义是什么 它可以存储的数据是否受到可用 RAM 的限制 它的数据存储与使用HDFS的A
  • 如何左连接或内连接表本身

    例如 我将这些数据存储在表中 id name parent parent id 1 add self 100 2 manage null 100 3 add 10 200 4 manage null 200 5 add 20 300 6 m
  • 在 Google Cloud Dataproc 环境中使用 Hadoop 流式处理运行 python map reduce 作业时出错

    我想使用 hadoop 流方法在 Google Cloud Dataproc 中运行 python map reduce 作业 我的map reduce python脚本 输入文件和作业结果输出位于Google Cloud Storage中
  • 是否可以通过编写单独的mapreduce程序并行执行Hive查询?

    我问了一些关于提高 Hive 查询性能的问题 一些答案与映射器和减速器的数量有关 我尝试使用多个映射器和减速器 但在执行中没有看到任何差异 不知道为什么 可能是我没有以正确的方式做 或者我错过了其他东西 我想知道是否可以并行执行 Hive
  • 为什么在我的例子中 For 循环比 Map、Reduce 和 List 理解更快

    我编写了一个简单的脚本来测试速度 这就是我发现的结果 实际上 for 循环在我的例子中是最快的 这真的让我感到惊讶 请查看下面 正在计算平方和 这是因为它在内存中保存列表还是有意为之 谁能解释一下这一点 from functools imp
  • AWS EMR 引导操作为 sudo

    我需要更新 etc hosts适用于我的 EMR 集群 EMR AMI 4 3 中的所有实例 整个脚本无非就是 bin bash echo e ip1 uri1 gt gt etc hosts echo e ip2 uri2 gt gt e
  • 为什么 Spark 没有使用本地计算机上的所有核心

    当我在 Spark Shell 中或作为作业运行一些 Apache Spark 示例时 我无法在单台计算机上实现完全的核心利用率 例如 var textColumn sc textFile home someuser largefile t
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • Hive:为现有文件夹结构添加分区

    我在 HDFS 中有一个文件夹结构 如下所示 但是 实际上没有使用以下命令在表上创建分区ALTER TABLE ADD PARTITION命令 即使文件夹结构的设置就像表有分区一样 如何自动将所有分区添加到Hive表中 Hive 1 0 外
  • HIVE - 使用WITH CLAUSE插入覆盖

    我有一个生成的查询以WITH子句开头 当我在控制台中运行它时 当我尝试使用INSERT OVERWRITE运行查询以将输出加载到单独的配置单元表中时 该查询工作正常 INSERT OVERWRITE TABLE proc db master
  • “客户端”对于 Hadoop/HDFS 究竟意味着什么?

    我理解其背后的一般概念 但我希望对 客户 是什么有更多的澄清和明确的定义 例如 如果我只是在终端上写一个 hdfs 命令 它仍然是 客户端 吗 ClientHadoop中是指用于与Hadoop文件系统通信的接口 Hadoop 可使用不同类型
  • Hive 有相当于 DUAL 的东西吗?

    我想运行这样的语句 SELECT date add 2008 12 31 1 FROM DUAL Hive 在 Amazon EMR 上运行 是否有类似的功能 最好的解决方案是不要提及表名 select 1 1 给出结果 2 但是可怜的 H

随机推荐

  • 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实现自连接/叉积?

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