1

如果我有一个hive使用 JOIN 的查询,让我们在两个表的任何列上说 aLEFT OUTER JOIN或 an ,那么我怎么知道它在后端转换为哪种类型的 JOIN (即 Map-side JOIN 或 Reduce-side加入) ? INNER JOINONMapReduce

谢谢。

4

1 回答 1

1

使用explain select ...并检查计划。它解释了 map 和 reduce 究竟会做什么。此外,在执行期间,您可以检查作业跟踪器上的日志并查看映射器或减速器进程正在做什么。

例如下面的解释计划说它是 map-side join(注意计划中的 Map Join Operator):

 Stage: Stage-33
    Map Reduce
      Map Operator Tree:
          TableScan
            **alias: s**
            filterExpr: (col is not null) (type: boolean)
            Statistics: Num rows: 85 Data size: 78965 Basic stats: COMPLETE Column stats: NONE
            Filter Operator
              predicate: (col is not null) (type: boolean)
              Statistics: Num rows: 22 Data size: 20438 Basic stats: COMPLETE Column stats: NONE
              **Map Join Operator
                condition map:
                     Inner Join 0 to 1**
于 2017-03-23T09:30:51.180 回答