gpt4 book ai didi

java - 在 hadoop 中实现 parallel-for

转载 作者:可可西里 更新时间:2023-11-01 16:20:56 26 4
gpt4 key购买 nike

我想在 hadoop 上实现一个 parallel-for in。基本上 parallel-for 接收一个子骨架(它可以是一个像 map() 这样的函数)和一个整数作为参数。子骨架将执行整数参数指定的次数。子骨架的一次调用的结果作为参数传递给子骨架的后续调用。最终,最后一个子骨架的结果作为并行结果提供。下面是 Scandium 库 (http://skandium.niclabs.cl/) 上的实现示例,我很乐意将此实现移植到 hadoop 上。

* @param <P> The input and result type of the {@link Skeleton}.
* */
public class For<P> extends AbstractSkeleton<P,P> {

Skeleton<P,P> subskel;
int times;

/**
* The constructor.
*
* @param skeleton The skeleton pattern to execute.
* @param times The number of times to execute the skeleton.
*/
public For(Skeleton<P,P> skeleton, int times){
this.subskel=skeleton;
this.times = times;
}

/**
* The constructor.
*
* @param execute The skeleton pattern to execute.
* @param times The number of times to execute the {@link Muscle}.
*/
public For(Execute<P,P> execute, int times){
this(new Seq<P,P>(execute), times);
}

/**
* {@inheritDoc}
*/
public void accept(SkeletonVisitor visitor) {
visitor.visit(this);
}
}

最佳答案

如果我对这个问题的理解正确,你想执行一个函数 N 次,每次调用接收前一次调用的输出作为输入。

从本质上讲,这种函数调用链是串行的。没有(通用的)方法来并行化它。

我能看到的唯一希望是,如果函数和输入(您未指定)的性质允许并行化函数的单次调用,那么您可以这样做,并进行迭代/链接在作业控制级别。这就是说:如果你的输入是一个数据集,而你的函数是对该数据集的一些转换,其输出是函数的合法输入,并且如果这个转换可以并行化,那么可能有一种方法可以在这里使用 Hadoop。

如果您能提供更多详细信息,我很乐意用更具体的建议更新此答案。

关于java - 在 hadoop 中实现 parallel-for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446914/

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