database - 决定查询使用多少 map reduce 作业的因素是什么?

标签 database hadoop hive

我有 250 万行数据和 6 列。在配置单元上执行查询时,我有时会得到 1 份工作,有时会得到 2 份工作。然而,这在我看来完全是随机的。 hive 为查询运行了多少 map reduce 作业的度量是什么?

我很感激你的回答!

更新

查询:

SELECT r.title, r.rank FROM ratings r JOIN genres g ON r.title=g.title WHERE g.genre='Action' ORDER BY r.rank DESC LIMIT 1;

-> 2 份工作
select distinct(genre) from genres

-> 1 份工作

最佳答案

每个作业通常都有一个 map 和一个 reduce 部分。
查询引擎决定将生成多少作业以及每个作业在其自己的 map 和 reduce 部分中会发生什么。
总会有一个优化,以尝试执行尽可能少的作业。

执行第一个查询的(非常)简化示例:
第一项工作:映射器将读取两个表 rg应用过滤器 g.genre='Action'然后,reducer 将从映射器(由连接键 title 分配)获取数据并执行连接。
第二个作业:第一个作业的中间输出是现在您要求对其进行排序的表的连接数据,因此映射器将从最后一个阶段读取即时输出,单个(!)reducer 将从映射器获取所有数据, reducer 会对这些数据进行排序。

要确定每个查询生成多少阶段(作业),您可以使用 EXPLAIN命令如解释 here

关于database - 决定查询使用多少 map reduce 作业的因素是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20456928/

相关文章:

database - 更新数据库的问题

sorting - 执行辅助排序时获取空指针异常

date - 在 hive 表中创建具有日期数据类型的列

SQL Server - 在这里使用复合主键有什么好处?

database - 保存图像 : files or blobs?

android - 使用 arcoreimg 工具创建 img 数据库

sql - sql中如何计算某列的连续行数

hadoop - 限制 hadoop 数据集中的文件( block )数量?

python - 通过API进行CDH自动部署不会为主机设置CDH版本

datetime - hive :在 “yyyy-MM-dd' T'HH:mm:ss.SSS'Z'中转换缺少日期的字符串日期时间