hadoop大数据处理之表与表的连接
hadoop大数据处理之表与表的连接
前言: hadoop中表连接其实类似于我们用sqlserver对数据进行跨表查询时运用的inner join一样,两个连接的数据要有关系连接起来,中间必须有一个相等的字段进行连接,其实hadoop的表连接就是对文本的处理,处理的文本中有一部分的内容是一样的,然后把这鞋大量的数据按照中间的一个相同的部分进行连接,用来解决大数据在关系型数据库查询困难的问题。
之前一直做c#语言的开发是一个本本分分做网站开发的程序员,像对hadoop这类用java语言做开发的内容一直属于菜鸟级别,hadoop中表连接也只最近慢慢学的,也是因为要解决工作中的一些问题慢慢熟悉起来的,在工作中确实解决了不少问题,下面我就讲一下我在工作中那个地方用到了表连接,其实还有很多地方,这里举一个比较经典的。
我们公司是做论坛的,数据了谈不上太大,不过也还够我这种小角色忙活半天了,之前出现了一个需求,就是拿到每一个帖子的发帖用户,和该帖子下所有的回帖用户,然后基于这个数据统计和发帖用户最相关的回帖用户,其实就是找用户与用户之间的关系。
这里的数据有两份(1)发帖人的信息,postid(帖子的id)和userid(发帖人id)(2)回帖人信息,postid(帖子的id)和userid(回帖人id)。这两个数据在数据库中是分别放在两个表中的,看似简单的问题如果一旦跟大数据扯上了关系就不好处理了,这里的发题人信息由3百万的数据,而回帖人的信息有7千多万条数据,中间如果用sqlserver的inner join根本是没办法查询的,这个时候就可以用hadoop的表连接了,首先把数据用工具从数据库到出成文本,因为要对两部分数据进行标示,所以两份数据要在文本中用"\t"分割的之后的length必须不同,
这一份是主帖的数据第一列是postid,第二列是用户的id,第三列是随便取出来的数据作为主帖的表示
这一份是回帖的数据,第一列是postid,第二列是回帖的用户id
在map阶段用postid作为key进行,中间给主帖一个标示typeL,并且给回帖的数据进行一个标示typeR。
map
在reduce就可以把相关联的帖子的发帖人id和回帖人id关联起来了
reduce
最终的结果展示
每一行中,第一个就是发帖人id,后边跟着的就是回帖人的信息。
hadoop大数据处理之表与表的连接的更多相关文章
- hadoop大数据处理平台与案例
大数据可以说是从搜索引擎诞生之处就有了,我们熟悉的搜索引擎,如百度搜索引擎.360搜索引擎等可以说是大数据技处理技术的最早的也是比较基础的一种应用.大概在2015年大数据都还不是非常火爆,2015年可 ...
- 0基础搭建Hadoop大数据处理-编程
Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和 ...
- Hadoop1-认识Hadoop大数据处理架构
一.简介概述 1.什么是Hadoop Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构 Hadoop是基于java语言开发,具有很好的跨平 ...
- Hadoop2-认识Hadoop大数据处理架构-单机部署
一.Hadoop原理介绍 1.请参考原理篇:Hadoop1-认识Hadoop大数据处理架构 二.centos7单机部署hadoop 前期准备 1.创建用户 [root@web3 ~]# useradd ...
- 0基础搭建Hadoop大数据处理-初识
在互联网的世界中数据都是以TB.PB的数量级来增加的,特别是像BAT光每天的日志文件一个盘都不够,更何况是还要基于这些数据进行分析挖掘,更甚者还要实时进行数据分析,学习,如双十一淘宝的交易量的实时展示 ...
- Hadoop大数据处理读书笔记
几个关键性的概念 云计算:是指利用大量计算节点构成的可动态调整的虚拟化计算资源.通过并行化和分布式计算技术,实现业务质量可控的大数据处理的计算技术. NameNode:是HDFS系统中的管理者.它负责 ...
- 0基础搭建Hadoop大数据处理-环境
由于Hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体的安装此处不作过多介绍,只作需要用到的知 ...
- 0基础搭建Hadoop大数据处理-集群安装
经过一系列的前期环境准备,现在可以开始Hadoop的安装了,在这里去apache官网下载2.7.3的版本 http://www.apache.org/dyn/closer.cgi/hadoop/com ...
- 数据算法 --hadoop/spark数据处理技巧 --(3.左外连接 4.反转排序)
三. 左外连接 考虑一家公司,比如亚马逊,它拥有超过2亿的用户,每天要完成数亿次交易.假设我们有两类数据,用户和交易: users(user_id,location_id) transactions( ...
随机推荐
- VisualStudio 怎么使用Visual Leak Detector
VisualStudio 怎么使用Visual Leak Detector 那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测 ...
- XP下类似%windir% %userprofile% 的变量的说明(转)
在一些批处理或者系统技巧操作教程文章中,我们常常会看到一些形如 %windir% 或者 %systemdrive% 的变量.这些变量都代表着什么含义呢?下面小技巧之家为大家整理了在Windows XP ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ( ...
- ios 调节器 modal 得知
代码中创建: 1.appdelegate 该contoller放置controller下一个 - (BOOL)application:(UIApplication *)application didF ...
- hdu 2191 (多重背包+二进制优化)
Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...
- [LeetCode] 033. Search in Rotated Sorted Array (Hard) (C++)
指数:[LeetCode] Leetcode 解决问题的指数 (C++/Java/Python/Sql) Github: https://github.com/illuz/leetcode 033. ...
- java 字符串反转
描述:给我一个字符串,例如I love java,输出: java love I 方法一 public class StringReverse { public void swap(char[] ...
- 编程算法 - 切割排序 代码(C)
切割排序 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 排序切割, 把一个数组分为, 大于k\小于k\等于k的三个部分. 能够使用高速排序的Parti ...
- c/c++ 基金会(七) 功能覆盖,虚函数,纯虚函数控制
1.功能覆盖 ClassA , ClassB ,其中ClassB继承ClassA 类的定义如下面的: #ifndef _CLASSA_H #define _CLASSA_H #include < ...
- ORA-00932: inconsistent datatypes: expected - got CLOB
从最近的数据库10.2.0.3升级到10.2.0.5之后,一些对象可以不被编译.查看这些对象的主列表不严格写入之前现在SQL这些语法结果package无法成功编译,诸如select查询列中不能使用混淆 ...