HIVE调优【1】如何读懂explain打印出的抽象语法树

1.使用explain

explain可以展示 hive是如何将查询 转化为 mapreduce 任务的。

示例:

explain select sum(number) from onecol;

执行完上面的 语句后,会 打印出抽象语法树。它表明 Hive是如何将 查询解析成 token(符号)和literal(字符)。
尽管 hiveql查询会将输出 写入到 控制台,但hive 实际上 会先将输出写入到1个临时文件中,即’tok_insert (tok_destination (tok_dir tok_tmp_file))’.
HIVE任务的拆解:

  • 1个hive任务会包含 1个或 多个 stage(阶段),不同的stage间会存在依赖关系。
  • 越复杂的查询 通常会引入越多的stage,而通常stage越多就需要越多的时间的来完成任务。
  • 1个stage可以是:1)1个mapreduce任务,2)1个抽样阶段;3)1个合并阶段;4)1个limit阶段。
  • hive在默认情况下,一次只执行1个stage(阶段),但是可以通过设置使其 并行执行

2.常见的explain语句及含义。

  1. 如下所示,如果 job中没有limit语句,那么stage-0阶段会显示limit:-1.
stage: Stage-0
  Fetch Operator
    limit:-1
    

3.exlain和explain extend区别。

使用explain extend 语句可以产生更多的输出信息。

你可能感兴趣的:(Hive)