【发布时间】:2016-06-17 21:31:05
【问题描述】:
我使用以下语法创建了一个配置单元表,指向一个 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
- 应用程序:Hive 1.0.0、Pig 0.14.0、Hue 3.7.1
【问题讨论】:
-
奇怪。请验证任何 s:3 路径 ....
-
您能分享一下您的“我的文件夹”的结构吗?它包含的所有文件/目录
-
您使用的是哪个版本的 EMR?
-
看来(我正在运行查询以验证现在),可能只有文件夹中的前 1000 个文件正在被读取。此外,我更新了问题,提供了有关文件结构和发布版本的更多详细信息。
-
是的 - 它读取的正是 1000 个文件。显然我得到了按文件名排序的前 1000 个。
标签: amazon-s3 hive amazon-emr