企业大数据平台MapReduce应用之Join实践!
【IT168 评论】在《Hadoop从入门到精通》大型专题的上半部分(专题链接见文末),我们讲解了Hadoop基本原理并且知道如何在Hadoop中组织、移动和存储数据。接下来,我们将探讨如何简化企业大数据技术应用。本章主要研究大数据模式,针对优化MapReduce操作技术,例如对大型数据集进行连接和排序,这些技术将让任务运行更快,并允许更有效地使用计算资源。
图6.1 不同类型的Join策略,显示为维恩图。阴影区域显示在连接中保留的数据。
日志数据集显示可以从应用程序或Web服务器日志中提取一些基于用户的活动。数据包括用户名,操作和源IP地址,以下是完整的数据集:
让我们先看一下应该根据数据选择哪种Join方法。
图6.2 用于选择Join策略的决策树
图6.3 使用过滤器和投影来减少数据大小
在连接中使用过滤器的挑战是:所加入的所有数据集都可能包含要过滤的字段。如果是这种情况,请查看使用Bloom过滤器解决此挑战。
表6.1存储格式及其下推支持
图6.4仅map的复制Join
要执行此Join,首先需要将要加入的两个文件复制到HDFS中的主目录:
Hive
不再强调map-join提示Hive 0.11实现了一些更改,这些更改表面上删除了map-join提示作为SELECT语句的一部分,但是不清楚在哪些情况下不再需要提示。全连接或右外连接不支持map端Join,它们将作为重新分区Join执行(reduce端连接)。
图6.5构成Semi-join的三个MapReduce作业
图6.6 Semi-join中的第一个作业生成一组存在于日志文件中的唯一用户名。
第一个作业的结果是出现在日志文件中的一组唯一用户。
图6.7 Semi-join中的第二个作业从日志数据中缺少的用户数据集中删除用户。
图6.8 Semi-join中的第三个作业将Job2生成的用户与原始用户日志组合在一起。
输出显示Semi-join和最终Join输出中作业的逻辑进展。
图6.9 用作复合Join的输入已排序文件示例
复合Join要求输入文件按键排序(在我们的示例中是用户名),因此在运行示例之前,需要对这两个文件进行排序并将它们上传到HDFS:
Hive
领取专属 10元无门槛券
私享最新 技术干货