gpt4 book ai didi

performance - 如何强制 PigStorage 输出几个大文件而不是数千个小文件?

转载 作者:可可西里 更新时间:2023-11-01 15:00:29 24 4
gpt4 key购买 nike

我在我的 pig 脚本中使用了这些行:

set default_parallel 20;
requests = LOAD ‘/user/me/todayslogs.gz’ USING customParser;
intermediate_results = < some-processing ... >
some_data = FOREACH intermediate_results GENERATE day, request_id, result;
STORE some_data INTO '/user/me/output_data' USING PigStorage(',');

“/user/me/todayslogs.gz”包含数千个 gzip 文件,每个文件大小为 200 MB。

当脚本完成时,“/user/me/output_data”在 HDFS 上有数千个微小的 (<1 KB) 文件。

我必须在另一个 pig 脚本中读取“/user/me/output_data”中的文件以进行进一步处理。我看到它会损害性能。如果 some_data 输出的文件是 gzip 压缩的,性能会更差。

这是 MapReduceLauncher 的输出。

2013-11-04 12:38:11,961 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Processing aliases campaign_join,detailed_data,detailed_requests,fields_to_retain,grouped_by_reqid,impressions_and_clicks,minimal_data,ids_cleaned,request_id,requests,requests_only,requests_typed,xids_from_request
2013-11-04 12:38:11,961 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - detailed locations: M: requests[30,11],campaign_join[35,16],null[-1,-1],null[-1,-1],detailed_requests[37,20],detailed_data[39,16],null[-1,-1],minimal_data[49,15],null[-1,-1],ids_cleaned[62,18],grouped_by_reqid[65,21] C: R: null[-1,-1],xids_from_request[66,21],impressions_and_clicks[69,26],fields_to_retain[70,20],requests_only[67,17],request_id[68,18],requests_typed[73,17]

如何强制 PigStorage 将输出写入更少的输出文件?

最佳答案

发生这种情况的原因是因为您的工作是仅限 map 的。在您执行的处理中不需要减少阶段,因此每个映射器将记录输出到它自己的文件,并且您最终为每个映射器得到一个文件。如果您有数千个输入文件,那么您就有数千个输出文件。

当您使用 ORDER BY 时,这种情况消失的原因是因为这会触发减少阶段,此时默认的并行度 20 开始发挥作用。

如果你想避免这种行为,你必须以某种方式强制减少阶段。由于您已经在执行 JOIN,因此您可以选择不执行此 USING 'replicated'。或者,如果您处于不进行联接的情况下,您可以使用什么都不做的 GROUP BY 强制执行它,如下所示:

reduced = FOREACH (GROUP some_data BY RANDOM()) GENERATE FLATTEN(some_data);

关于performance - 如何强制 PigStorage 输出几个大文件而不是数千个小文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com