hive横向视图使用where子句展开-首先运行什么

7rtdyuoh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(360)

我正在试图理解where子句是在侧面视图的情况下在Hive中爆炸之后运行还是之前运行。
例如,如果我有

SELECT *
FROM
   (
    SELECT
        a1,
        a2,
        b.ds,
        conv_list.threshold_conv[0]
            AS t
    FROM
       t1 b
    LATERAL VIEW EXPLODE({list})
                conv_list as threshold_conv
    WHERE
        b.ds between '{DATE-29}' and '{DATE}'
  )

ds过滤器在侧视图爆炸之前还是之后运行?

u0njafvf

u0njafvf1#

如果filter列是表中的一个分区,这就是分区的主要目的,即使where子句不在子查询中( predicate 下推)
横向视图有时可能是一个昂贵的操作,因此在应用横向视图之前,请先应用hive筛选器,然后根据您的查询查看以下执行计划(不同)。

STAGE PLANS:   Stage: Stage-1
    Map Reduce
      Map Operator Tree:
          TableScan
            alias: a
            filterExpr: ((mycolumndpartitioned > 0) and (mycolumn= 112623934)) (type: boolean)
            Statistics: Num rows: 23953585 Data size: 52793067242 Basic stats: COMPLETE Column stats: NONE
            Filter Operator
              predicate: (mycolumn= 112623934) (type: boolean)
              Statistics: Num rows: 11976792 Data size: 26396532519 Basic stats: COMPLETE Column stats: NONE
              Lateral View Forward
                Statistics: Num rows: 11976792 Data size: 26396532519 Basic stats: COMPLETE Column stats: NONE
                Select Operator
                  Statistics: Num rows: 11976792 Data size: 26396532519 Basic stats: COMPLETE Column stats: NONE
                  Lateral View Join Operator
                    outputColumnNames: _col13
                    Statistics: Num rows: 23953584 Data size: 52793065038 Basic stats: COMPLETE Column stats: NONE
                    Select Operator
                      expressions: _col13.myArray (type: string)
                      outputColumnNames: _col0
                      Statistics: Num rows: 23953584 Data size: 52793065038 Basic stats: COMPLETE Column stats: NONE
                      File Output Operator
                        compressed: false
                        Statistics: Num rows: 23953584 Data size: 52793065038 Basic stats: COMPLETE Column stats: NONE

现在,如果您的过滤器使用分解数组中的一些字段,我假设hive将尝试应用所有可能的过滤器,这些过滤器在应用横向视图之前不使用分解数据中的任何列,然后将您的过滤器应用于分解数据

相关问题