我是hadoop和mapreduce的新手。我们有一个普通的Java应用程序,在其中我们从hadoop文件系统中读取了一个文件(大小为8 GB),并对这些数据应用了一些规则。应用规则后,我们得到Java哈希图(大小很大),并将该数据保留在缓存或缓冲区中。同时,我们通过对hive进行查询来从hive中获取数据,并准备一个Java哈希图,该哈希图的大小仍然很大。现在,我们比较这两个哈希图数据以准备最终报告以检查数据的准确性。
在上面的过程中,由于我们使用普通的Java程序来完成工作,因此我们面临以下问题。
现在,我们尝试在hadoop mapreduce中实现相同的功能。
最佳答案
8 GB是一个很小的数据集。我可以将其中4个“数据集”放入我的笔记本电脑RAM中!只需将其倾倒在任何关系引擎中,然后对其进行适当按摩,直到奶牛回家。这不是“大数据”。
作为记录,在Hive中处理两个真正的大型数据集(例如每个+1 TB)的方法是排序合并存储桶联接(又名SMB联接)。阅读LanguageManual JoinOptimization,观看Join Strategies in Hive。
关于performance - 如何使用hadoop mapreduce比较两个大型数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759775/