整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

8.3. 连接

hadoop 小红牛 48℃ 0评论

MapReduce能够执行大型数据集间的“连接” (join)操作,但是,自己从头编写相关代码来执行连接的确非常棘手。除了编写MapReduce程序,还可以考虑采用更髙级的框架,如Pig、Hive或Cascading等,它们都将连接操作视为整个实现的核心部分。

先简要地描述待解决的问题。假设有两个数据集:气象站数据库和天气记录数据集,并考虑如何合二为一。一个典型的査询是:输出各气象站的历史信息,同时各行记录也包含气象站的元数据信息,如图8-2所示。

连接操作的具体实现技术取决于数据集的规模及分区方式。如果一个数据集很大(例如天气记录)而另外一个集合很小,以至于可以分发到集群中的每一个节点之中(例如气象站元数据),则可以执行一个MapReduce作业,将各个气象站的天气记录放到一块(例如,根据气象站ID执行部分排序),从而实现连接。mapper或reducer根据各气象站ID从较小的数据集合中找到气象站元数据,使元数据能够被写到各条记录之中。该方法将在8.4节中详细介绍,它侧重于将数据分发到tasktracker的机制。

blob.png 

8-2.两个数据集的内连接

连接操作如果由mapper执行,则称为“map端连接”;如果由reducer执行,则称为“reduce端连接”。

如果两个数据集的规模均很大,以至于没有哪个数据集可以被完全复制到集群的每个节点,我们仍然可以使用MapReduce来进行连接,至于到底采用map端连接还是reduce端连接,则取决于数据的组织方式。最常见的一个例子便是用户数据库和用户活动日志(例如访问日志)。对于一个热门服务来说,将用户数据库(或日志)分发到所有MapReduce节点中是行不通的。

转载请注明:全栈大数据 » 8.3. 连接

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址