EMR 上的 Hive 不读取 S3 位置的所有文件

Hive on EMR not reading all files at S3 location

我使用以下语法创建了一个配置单元 table,指向一个 S3 文件夹:

CREATE EXTERNAL TABLE IF NOT EXISTS daily_input_file ( 
        log_day STRING, 
        resource STRING, 
        request_type STRING, 
        format STRING, 
        mode STRING, 
        count INT 
) row format delimited fields terminated by '\t' LOCATION 's3://my-bucket/my-folder';

当我执行查询时,例如:

SELECT * FROM daily_input_file WHERE log_day IN ('20160508', '20160507');

我希望记录会被返回。

我已确认此数据包含在该文件夹的文件中。事实上,如果我将包含此特定数据的文件复制到一个新文件夹中,为该新文件夹创建一个 table 并创建 运行 查询,我就会得到结果。我还从原始文件夹中的其他文件(实际上是大多数文件)中获取结果。

s3://my-bucket/my-folder的内容很简单。我的文件夹中没有子目录。有两种文件名(a 和 b),都以创建日期 (YYYYMMDD_) 为前缀,都具有扩展名 .txt000.gz。以下是一些示例:

那么可能发生了什么?可以从 S3 处理的单个文件夹中的文件数量是否有限制?还是其他原因?

以下是使用的版本:

S3 文件遇到的行为是 EMR 版本 4.7.0 的问题,而不是 EMR 的限制。

使用 EMR 版本 4.7.1 或更高版本。

http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-whatsnew.html