gpt4 book ai didi

hadoop - 为什么我的任务不能在 Pig 中并行运行?

转载 作者:可可西里 更新时间:2023-11-01 16:44:05 25 4
gpt4 key购买 nike

我正在学习 hadoop,并且正在对一个可以作为大数据项目投入生产的项目进行一些实验。无论如何,目前我只是在用少量数据做一些测试。场景如下,我在 pig 中加载了一堆 json 文件,如下所示:

a = load 's3n://mybucket/user_*.json' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS (json:map []);
b = FOREACH a GENERATE flatten(json#'user') as (m:map[]) ;

假设文件很小,它们只包含一个对象,但其中有一大堆。我假设 FOREACH 可以同时并行打开更多文件,我错了吗?程序在 amazon c3.xlarge 上运行大约需要 10 秒,大约有 400 个文件。我敢肯定,如果我用 C# 编写程序,运行起来只需要几分之一秒,我哪里错了?

最佳答案

Pig 以并行方式运行任务,Pig 最初会花费一些时间,因为它以 mapreduce 方式运行并优化整个脚本,因此在 Pig 中对小数据集的操作会更慢。它应该用于大数据集。要为小数据增加 pig 中的并行任务数,可以在 FOREACH 行中使用 PARALLEL 命令,否则可以通过设置 default_parallel n 来整体增加 reducer 的数量,将并行度设置为 n。最后一种情况可能是 pig 以 mapper 的形式运行所有任务,而 mapper 的数量太少,因为你的文件很小,你必须更改一些 yarn 配置以增加 mapper 的数量。

关于hadoop - 为什么我的任务不能在 Pig 中并行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030322/

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