Hadoop 配置单元-分区上的查询不返回任何内容

Hadoop 配置单元-分区上的查询不返回任何内容,hadoop,hive,Hadoop,Hive,我有一个按特定开始日期(ds)分区的表。我可以查询最新的分区(前一天的数据),它将使用该分区 hive> select count(1) from vtc4 where ds='2012-11-01' ; ...garbage... MapReduce Jobs Launched: Job 0: Map: 1 Reduce: 1 Cumulative CPU: 6.43 sec HDFS Read: 46281957 HDFS Write: 7 SUCCESS Total Ma

我有一个按特定开始日期(ds)分区的表。我可以查询最新的分区(前一天的数据),它将使用该分区

hive> select count(1) from vtc4 where ds='2012-11-01' ;
...garbage...
MapReduce Jobs Launched:
Job 0: Map: 1  Reduce: 1   Cumulative CPU: 6.43 sec   HDFS Read: 46281957 HDFS Write:  7 SUCCESS
Total MapReduce CPU Time Spent: 6 seconds 430 msec
OK
151225
Time taken: 35.007 seconds
但是,当我尝试查询早期分区时,配置单元似乎可以很好地读取分区,但不会返回任何结果

hive> select count(1) from vtc4 where ds='2012-10-31' ;
...garbage...
MapReduce Jobs Launched:
Job 0: Map: 1  Reduce: 1   Cumulative CPU: 7.64 sec   HDFS Read: 37754168 HDFS Write: 2 SUCCESS
Total MapReduce CPU Time Spent: 7 seconds 640 msec
OK
0
Time taken: 29.07 seconds
但是,如果我告诉配置单元对表本身中的日期字段运行查询,并且不使用分区,则会得到正确的结果

hive> select count(1) from vtc4 where date_started >= "2012-10-31 00:00:00" and date_started < "2012-11-01 00:00:00" ;
...garbage...
MapReduce Jobs Launched:
Job 0: Map: 63  Reduce: 1   Cumulative CPU: 453.52 sec   HDFS Read: 16420276606 HDFS Write: 7 SUCCESS
Total MapReduce CPU Time Spent: 7 minutes 33 seconds 520 msec
OK
123201
Time taken: 265.874 seconds

分区文件夹存在,但当我尝试在上执行hadoop fs-ls时hdfs://hadoop5.internal/user/hive/warehouse/vtc4/ds=2012-10-31它说文件/目录不存在。如果我使用web界面浏览到该目录,我可以进入该文件夹,以及查看/part-m-000*文件。如果我在上做fs-lshdfs://hadoop5.internal/user/hive/warehouse/vtc4/ds=2012-11-01它工作正常

看起来要么是权限问题,要么是配置单元或名称节点的元数据问题。以下是我将尝试的:

  • 将该分区中的数据复制到hdfs中的其他位置。您可能需要以配置单元或hdfs用户的身份执行此操作,具体取决于您的权限设置方式
  • alter table vtc4放置分区(ds='2012-10-31')
  • altertable vtc4添加分区(ds='2012-10-31')
  • 将数据复制回hdfs上的分区

  • 配置单元分区的另一个特点是,在配置单元之外创建(例如,从sparksql创建)时,它有时不会在元数据系统中注册。您也可以尝试
    MSCK修复表xc\u bonus对分区进行任何更改后,使其正确反映。

    当您描述格式化的vtc4分区(ds='2012-10-31')时会发生什么情况。
    ?hdfs上的位置是什么?你在那里看到了什么文件?@Joe K我用你要求的信息更新了帖子。哈,这很有效。。。。。我想我需要回去对所有分区都这样做——我有一个通过sqoop的导入过程,该过程对一个mysql表进行了分区和导入,所以可能有一些奇怪之处。
    Partition Value:        [2012-10-31 ]
    Database:               default
    Table:                  vtc4
    CreateTime:             Wed Oct 31 12:02:24 PDT 2012
    LastAccessTime:         UNKNOWN
    Protect Mode:           None
    Location:               hdfs://hadoop5.internal/user/hive/warehouse/vtc4/ds=2012-10-31
    Partition Parameters:
        transient_lastDdlTime   1351875579
    
    # Storage Information 
    SerDe Library:          org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    InputFormat:            org.apache.hadoop.mapred.TextInputFormat
    OutputFormat:           org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
    Compressed:             No
    Num Buckets:            -1
    Bucket Columns:         []
    Sort Columns:           []
    Storage Desc Params:
    serialization.format    1
    Time taken: 0.191 seconds