我有一個由特定開始日期(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 1.03和hive 0.9。我對蜂巢/ hadoop很新,所以任何幫助,將不勝感激。
謝謝。
編輯1: 配置單元>描述格式化vtc4分區(ds ='2012-10-31');
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
分區的文件夾存在,但是當我嘗試做HDFS Hadoop的FS -ls://hadoop5.internal/user/hive/warehouse/vtc4/ds=2012-10-31它說文件/目錄不存在。如果我使用Web界面瀏覽該目錄,則可以進入該文件夾,以及查看/ part-m-000 *文件。如果我在hdfs://hadoop5.internal/user/hive/warehouse/vtc4/ds=2012-11-01上做了一個fs -ls,它可以正常工作。
會發生什麼事,當你做'描述格式化分區VTC4(DS = '2012-10-31')'? hdfs上的位置是什麼,你在那裏看到哪些文件? –
@Joe K我用你要求的信息更新了帖子。 – wafflecopter