我是一个学习hadoop和apachespark的学生。我想知道如何从网上的apachespark作业中获得输出。
下面是在web上运行apachespark作业的简单php代码,因为我只想测试它。
<?php
echo shell_exec("spark-submit --class stu.ac.TestProject.App --master spark://localhost:7077 /TestProject-0.0.1-SNAPSHOT.jar");
?>
下面是apachespark作业的java代码示例。
public class App
{
public static void main( String[] args )
{
SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi");
sparkConf.setMaster("spark://localhost:7077");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2;
int n = 100000 * slices;
List<Integer> l = new ArrayList<Integer>(n);
for (int i = 0; i < n; i++) {
l.add(i);
}
JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);
JavaRDD<Integer> countRDD = dataSet.map(new Function<Integer, Integer>() {
public Integer call(Integer arg0) throws Exception {
double x = Math.random() * 2 - 1;
double y = Math.random() * 2 - 1;
return (x * x + y * y < 1) ? 1 : 0;
}
});
int count = countRDD.reduce(new Function2<Integer, Integer, Integer>() {
public Integer call(Integer arg0, Integer arg1) throws Exception {
return arg0 + arg1;
}
});
System.out.println("Pi is roughly " + 4.0 * count / n);
jsc.stop();
}
}
我只想得到标准输出,但在运行代码后,我得到了空输出。我在maven项目上构建了这个java代码,因此也检查了它在cmd模式下的运行。
我该怎么解决?
提前谢谢你的回答,对不起我的英语不好。如果你不明白我的问题,请发表评论。
2条答案
按热度按时间dw1jzc5e1#
您可以将jobserverapi用于apachespark
hgtggwj02#
可以说,一个作业的输出保持在该作业中。即使spark很快,它也不是那么快,它可以立即生成数据。作业在分布式集群上运行,这需要一些时间。
您必须将输出写入某个地方,通常是写入一个数据库,然后您可以从web应用程序中查询该数据库。您的作业不是从web应用程序开始的,而是应该根据应用程序的需要来安排。
如果您是从java、scala或python作业中运行作业,则可以直接检索其结果。对于php,我不太确定。