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。以下是一些示例:
- 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
S3 文件遇到的行为是 EMR 版本 4.7.0 的问题,而不是 EMR 的限制。
使用 EMR 版本 4.7.1 或更高版本。
http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-whatsnew.html
我使用以下语法创建了一个配置单元 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。以下是一些示例:
- 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
S3 文件遇到的行为是 EMR 版本 4.7.0 的问题,而不是 EMR 的限制。
使用 EMR 版本 4.7.1 或更高版本。
http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-whatsnew.html