1 .可以在hive和mysql中使用explain sql语句检查执行顺序。 对于标准sql语句,写入顺序如下:
select…from…where…group by…having…order by…limit…(1) mysql语句执行顺序:
from…where…group by…having…select…order by…limit…()2) hive语句的执行顺序:
from…where…select…group by…having…order by…limit…2.hive执行顺序hive基于MapReduce程序,其执行顺序决定hive语句的执行顺序映射阶段:
执行from加载,搜索和加载表,执行where过滤,执行条件过滤和过滤,然后执行选择查询。 执行输出项过滤以运行组by组。 描述分组后需要计算的函数映射端文件的合并。 map端本地溢出写入文件的合并操作将使每个map最终形成临时文件。
然后,将每列映射到相应的reduceReduce阶段。
goup by :对从map端发送来的数据进行分组计算。 select :最后一列筛选器是用于输出结果的limit。 排序后将结果输出到HDFS文件的优化侧重于执行顺序。 创建时通常需要注意以下事项:
使用分区剪辑、列剪辑时,分区一定不要使用计数距离。 group by在确定是否存在多对多关联连接表而不是distinct时使用相同的关键字。 这样,一个job就会减少每个阶段的数据量,只选择所需的,在join表前过滤后放置一个大表,然后放置后面的谓词进行推送。 where谓词逻辑将尽快运行并减少