Amazon s3 为什么配置单元查询的结果被拆分为多个文件

Amazon s3 为什么配置单元查询的结果被拆分为多个文件,amazon-s3,hadoop,hive,amazon-emr,Amazon S3,Hadoop,Hive,Amazon Emr,我设置了一个Amazon ElasticMapreduce作业来运行配置单元查询 CREATE EXTERNAL TABLE output_dailies ( day string, type string, subType string, product string, productDetails string, uniqueUsers int, totalUsers int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TE

我设置了一个Amazon ElasticMapreduce作业来运行配置单元查询

CREATE EXTERNAL TABLE output_dailies (
day string, type string, subType string, product string, productDetails string, 
uniqueUsers int, totalUsers int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '${OUTPUT}';

INSERT OVERWRITE TABLE output_dailies
select day, type, subType, product, productDetails, count(distinct accountId) as uniqueUsers, count(accountId) as totalUsers from raw_logs where day = '${QUERY_DATE}' group by day, type, subType, product, productDetails;
作业完成后,配置为在S3上的输出位置将包含5个具有此模式的文件
task\u 201110280815\u 0001\u r\u00000x
,其中x从0变为4。这些文件很小,每个35 KB


是否可以指示配置单元将结果存储在单个文件中?

它们是由不同的数据节点创建的。每一个都附加到文件中-如果它们都必须附加到同一个文件中,那么这将需要大量的锁定并降低速度


只需引用目录及其所有内容,就可以将多个文件视为一个大文件

一般来说是的,这是可以实现的,但会失去一些可扩展性

尝试使用该设置

“设置mapred.reduce.tasks=1;”


这将强制1个减速机,因此将只输出1个文件。

谢谢,Alex。似乎出于我的目的,我可以将内容合并到一个文件中。我正在尝试从我2个月以上的数据日志中找到一个最小的日期和一个最大的日期。EMR从每个不同的数据节点向5个不同的输出文件发送最小-最大日期。因此,我在5个不同的输出文件中获得了5个最小日期和5个最大日期。那不符合我的目的?如何将它们压缩到一个输出文件中,以查找整个数据集上的一个最小日期和一个最大日期?