首页 > 解决方案 > 为什么在 Hive 中映射器的数量变化如此之大以进行插入覆盖

问题描述

我有一个名为 t1 的启用事务的表,我使用 Tez 作为执行引擎。

我不明白为什么这两个查询的查询计划存在巨大差异。我应该怎么做才能调整这种情况?

  1. select t.id, t.id_type from t limit 20;

--> 生成 10 个地图任务。

  1. insert overwrite table t2 select t.id as id, t.id_type as id_type from t limit 20;

--> 生成 1100 个地图任务。

标签: hiveapache-tez

解决方案


使用EXPLAIN EXTENDED命令,它将提供有关正在执行的操作的信息并显示正在读取的文件。比较两个查询的命令输出。可能它读取不同的文件或做其他事情。

EXPLAIN EXTENDED select t.id, t.id_type from t limit 20;

对比

EXPLAIN EXTENDED insert overwrite table t2 select t.id as id, t.id_type as id_type from t limit 20;

推荐阅读