1

我创建了一个按日期分区的表。但不能在 where 子句中使用分区。这是过程步骤1:

     CREATE TABLE new_table (
           a string,
           b string
      )
     PARTITIONED BY (dt string);

第2步:

        Insert overwrite table new_table partition (dt=$date)
        Select a, b from my_table
        where dt = '$date

表已创建。

           Describe new_table;
           a string
           b string
           dt string

问题

           select * from new_table where dt='$date'

返回空集。

然而

            select * from new_table 

返回 a、b 和 dt。

有谁知道这可能是什么原因?

谢谢

4

2 回答 2

0

Try inserting with

Insert overwrite table new_table partition (dt=$date)
    Select a, b, dt from my_table
    where dt = '$date'
于 2013-01-13T10:32:50.380 回答
0

Sahara,where 子句中的分区确实有效。您是否有可能在谓词的 RHS 中指定了错误的值?

您可能还想查看里面的数据/user/hive/warehouse/new_table(默认情况下),看看那里的数据是否符合您的预期。

于 2012-12-17T23:09:14.527 回答