hive - 为什么在 Hive 中映射器的数量变化如此之大以进行插入覆盖
问题描述
我有一个名为 t1 的启用事务的表,我使用 Tez 作为执行引擎。
我不明白为什么这两个查询的查询计划存在巨大差异。我应该怎么做才能调整这种情况?
- select t.id, t.id_type from t limit 20;
--> 生成 10 个地图任务。
- insert overwrite table t2 select t.id as id, t.id_type as id_type from t limit 20;
--> 生成 1100 个地图任务。
解决方案
使用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;
推荐阅读
- python - 使用 range 命令迭代 url 以进行网页抓取
- c# - 解析在启动时注册的 Main.cs 中的服务
- angular - 当我在 httpClient 中发现错误时如何获取 json 正文
- php - 如何使用 php 在 twitter 卡中查看用户的用户名?
- kubernetes - Kubernetes Pods - 从主机节点注入环境变量
- javascript - 在插入新用户之前尝试检查我的 mongodb 中是否存在用户(以防止多个相同的电子邮件注册)
- mysql - 如何使用“WHERE NOT IN(...超过 1000 个项目...)”优化更新 SQL 查询?
- php - Docker + PHP + RabbitMQ
- ios - 为 iOS 平台构建的问题
- bash - 如何停止处理文件并继续处理管道中的下一个文件?