我想了解hive是如何执行这两个查询的。我们在Hive中有没有查询优化器?
select * from A JOIN B on A.a = B.b
select * from A JOIN B where A.a = B.b
请让我知道配置单元查询是如何执行的(工作流)?
提前谢谢。
发布于 2015-09-15 23:29:47
不幸的是,看起来Hive在这里并没有做任何好的后端优化。我给自己写了几个例子,并比较了阶段计划和抽象语法树。
select * from A JOIN B on A.a = B.b
在上面的查询中,hive找到了A.a = B.b的位置,然后将两者连接在一起。
select * from A JOIN B where A.a = B.b
在这个查询中,每个value - hive上的hive连接A到B执行一个交叉连接,这是一个大规模的映射阶段(假设您的表很大)。然后在reduce阶段,hive过滤掉A.a != B.b的行
https://stackoverflow.com/questions/32588695
复制相似问题