我使用以下语法创建了一个配置单元表,指向一个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');
我希望记录会被退回。
我已经确认这些数据包含在那个文件夹的文件中。实际上,如果我将包含此特定数据的文件复制到一个新文件夹中,为该新文件夹创建一个表并运行查询,就会得到结果。我还从原始文件夹中的其他文件(实际上是大多数文件)中获取结果。
s3://my bucket/my folder的内容很简单。我的文件夹中没有子目录。有两种不同的文件名(a和b),它们的前缀都是创建日期(yyyymmdd),扩展名都是.txt000.gz。以下是一些示例:
20160508乩a.txt000.gz
20160508乩b.txt000.gz
20160509乩a.txt000.gz
20160509乩b.txt000.gz
那么可能发生了什么?一个文件夹中可以从s3处理的文件数量有限制吗?还是别的什么东西是罪魁祸首?
以下是使用的版本:
发布标签:emr-4.7.0
hadoop发行版:amazon 2.7.2
应用:Hive1.0.0,Pig0.14.0,色调3.7.1
1条答案
按热度按时间sh7euo9m1#
s3文件的行为是emr 4.7.0版的问题,而不是emr的限制。
使用emr 4.7.1版或更高版本。
http://docs.aws.amazon.com/elasticmapreduce/latest/releaseguide/emr-whatsnew.html