hive - Hive 解释计划在哪里查看全表扫描?
问题描述
我如何从 hive中看到EXPLAIN
是否有全表扫描?
例如,是否有完整扫描?表大小为 993 行。
查询是
explain select latitude,longitude FROM CRIMES WHERE geohash='dp3twhjuyutr'
我在geohash
列上有二级索引。
STAGE PLANS:
Stage: Stage-1
Map Reduce
Map Operator Tree:
TableScan
alias: crimes
filterExpr: (geohash = 'dp3twhjuyutr') (type: boolean)
Statistics: Num rows: 993 Data size: 265582 Basic stats: COMPLETE Column stats: NONE
Filter Operator
predicate: (geohash = 'dp3twhjuyutr') (type: boolean)
Statistics: Num rows: 496 Data size: 132657 Basic stats: COMPLETE Column stats: NONE
Select Operator
expressions: latitude (type: double), longitude (type: double)
outputColumnNames: _col0, _col1
Statistics: Num rows: 496 Data size: 132657 Basic stats: COMPLETE Column stats: NONE
File Output Operator
compressed: false
Statistics: Num rows: 496 Data size: 132657 Basic stats: COMPLETE Column stats: NONE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Stage: Stage-0
Fetch Operator
limit: -1
Processor Tree:
ListSink
解决方案
- 计划中没有分区谓词意味着完全扫描。当然,这与 ORC 中的谓词下推无关。
- 检查每个运算符中的数据大小和行数。
EXPLAIN DEPENDENCY
命令将显示所有input_partitions
集合,您可以检查将扫描的确切内容。
推荐阅读
- c - 获取数字中的偶数
- android - Google Play 商店跨应用程序脚本错误
- sql - 如何在 PostgreSQL 模式中为新表设置 SELECT 默认权限?
- bash - 如何在非交互式 bash 脚本及其 git 子程序中禁用 ctrl-c
- javascript - 通过帖子发送文本时如何不丢失换行符
- javascript - 在 document.write() 中调用 JavaScript 函数
- css - 使用 SASS 返回 Bootstrap 列宽
- java - 如果我们在重新散列发生时放置一个元素,HashMap 会发生什么?
- javascript - React Antd 无法从自定义日期选择器中获取价值
- java - 在 Java 中复制后,Arrays.sort 似乎正在更改我的复制数组。为什么会发生这种情况?