子目录上的S3配置单元外部表不起作用

时间:2015-10-22 10:39:56

标签: amazon-s3 hive hiveql

我有以下s3目录结构。

Data/
   Year=2015/
         Month=01/
            Day=01/
                files
            Day=02/
                files
         Month=02/
            Day=01/
                files
            Day=02/
                files
         .
         .
         .

   Year=2014/
         Month=01/
            Day=01/
                files
            Day=02/
                files
         Month=02/
            Day=01/
                files
            Day=02/
                files

所以我正在创建hive外部表,如下所示

CREATE external TABLE trips
(
 trip_id  STRING,probe_id STRING,provider_id STRING,
 is_moving TINYINT,is_completed BOOLEAN,start_time STRING,
 start_lat  DOUBLE,start_lon DOUBLE,start_lat_adj DOUBLE) 
  PARTITIONED BY (year INT,month INT,day INT)
  STORED AS TEXTFILE
  LOCATION 's3n://accesskey:secretkey@bucket/data/';

当我在此表上运行查询时,没有任何异常返回数据。如果我只将相同的文件放在一个目录中而没有分区,那么它运行正常。我也尝试过设置

set mapred.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;

知道我哪里错了吗?

1 个答案:

答案 0 :(得分:1)

您需要运行ALTER TABLE trips RECOVER PARTITIONS命令。此命令将为S3中存在的表分区创建元数据。请参阅此处的文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RecoverPartitions(MSCKREPAIRTABLE)