我希望以下简单的hello world程序在Apache Spark中并行执行100次。
public class SimpleHelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
因此,在并行执行后,它应该打印“Hello World”100次。
如何在独立的Apache Spark中执行此操作?
答案 0 :(得分:2)
取决于你真正想要的东西:
import scala.collection.parallel._ import scala.concurrent.forkjoin._ val pool = (0 to 100).par // ThreadPool with 100 concurrent Threads pool.tasksupport = new ForkJoinTaskSupport(new ForkJoinPool(100)) pool.foreach(i => { println("Hello World") })
// create 100 partitions var df = sc.parallelize(1 to 100, 100).toDF() // print "hello world" per each partition df.foreachPartition(_ => println("Hello World"))
答案 1 :(得分:0)
这将使用Spark 2.x在Scala中执行您想要的操作:
sparkSession.range(100)
.foreach(_ => println("Hello World"))
但是你不会在驱动程序上看到打印的行,因为它们是在工作节点上执行的。
答案 2 :(得分:0)
嗨,如果你想在这种情况下运行火花机。
对于Spark工作,您需要首先启动RDD。然后使用Spark动作或转换函数进行数据计算。此外,它会自动并行运行。
public class hello world {
public static void main(String[] args) throws Exception {
try (JavaSparkContext sc = setupSparkContext()) {
JavaRDD<String> helloworldRDD = sc.textFile("//your hellworld file");
helloworldRDD.map(x->{
for (int i=0;i<100;i++){
System.out.println(x);
}
return x;
}).collect();
}
}
private static JavaSparkContext setupSparkContext() {
SparkConf sc = new SparkConf();
return App.getSparkContext("helloworld", sc);
}
}