【问题标题】:Hive on EMR not reading all files at S3 locationEMR 上的 Hive 未读取 S3 位置的所有文件
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2019-09-05
    相关资源
    最近更新 更多