在阅读了http://spark.apache.org/docs/0.8.0/cluster-overview.html上的一些文档之后,我得到了一些我想澄清的问题。
以Spark为例:
JavaSparkContext spark = new JavaSparkContext(
new SparkConf().setJars("...").setSparkHome....);
JavaRDD<String> file = spark.textFile("hdfs://...");
// step1
JavaRDD<String> words =
file.flatMap(new FlatMapFunction<String, String>() {
public Iterable<String> call(String s) {
return Arrays.asList(s.split(" "));
}
});
// step2
JavaPairRDD<String, Integer> pairs =
words.map(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s) {
return new Tuple2<String, Integer>(s, 1);
}
});
// step3
JavaPairRDD<String, Integer> counts =
pairs.reduceByKey(new Function2<Integer, Integer>() {
public Integer call(Integer a, Integer b) {
return a + b;
}
});
counts.saveAsTextFile("hdfs://...");
创建sparkcontext
时,每个工作者都启动一个执行器。这是一个单独的进程(JVM),它也加载您的jar。执行程序连接回驱动程序。现在驱动程序可以向它们发送命令,如示例中的flatmap
、map
和reducebykey
。当驱动程序退出时,执行程序关闭。
RDD有点像拆分为多个分区的大数组,每个执行器可以保存其中的一些分区。
任务是通过序列化function
对象从驱动程序发送到执行程序的命令。执行器反序列化命令(这是可能的,因为它已经加载了您的jar),并在一个分区上执行它。
回答您的具体问题:否,不是每一步都启动一个新的流程。在构造sparkcontext
时,将在每个工作者上启动一个新进程。
我有一个文件,看起来像这样 wsimport任务从wsdl文件生成所需的一些java文件。生成需要一些时间,所以我不希望每次构建jar或编译程序时都执行它。 wsclean任务旨在当wsdl发生更改时使用。 首先,我运行wsimport任务并确认文件生成正确,它们就是! 但是现在,当我运行gradle jar时,生成的文件被删除了。为什么? 当我注释掉wsclean任务时,jar任务成功地继续。为
我想了解更多关于ConnectedAndroidTest分级任务的信息。我看到它是用来安装应用程序和测试APK以及运行测试的。 但它的具体步骤是什么?(分级任务(如果有))
问题内容: 因此,我一直在编写一个简单的3D GUI应用程序,旨在让用户只需双击JAR文件即可使用。在将其放入JAR文件之前,它可以正常工作,并且在命令提示符下运行时(在jar文件的目录中键入“ java -jar Modeler.jar”),可以在JAR文件中使其完美运行。但是,当我双击它时,什么也没有发生。它运行完美,没有命令提示符下的错误。我从经验中知道,没有显示启动时的崩溃报告,因为控制台
任务是项目管理中最小单位。任务是一个具体的工作,有明确的负责人和截止时间,比如需要在某个特定的时间段内完成某项工作。
我的spark任务是在运行时抛出不可序列化的任务。谁能告诉我我做错了什么吗? 以下是stacktrace:
问题内容: 我有三个连接的线程,即第二个线程在第一个死后执行。 这是我的代码: 我将如何使用而不是三个线程对象来实现此功能? 问题答案: 如果您想要/需要的是一个接一个地执行一组作业,但要在与主应用程序线程不同的单个线程中执行,请使用。