java—如何在web上运行apache spark作业后获得输出

mnowg1ta  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(559)

我是一个学习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模式下的运行。
我该怎么解决?
提前谢谢你的回答,对不起我的英语不好。如果你不明白我的问题,请发表评论。

dw1jzc5e

dw1jzc5e1#

您可以将jobserverapi用于apachespark

hgtggwj0

hgtggwj02#

可以说,一个作业的输出保持在该作业中。即使spark很快,它也不是那么快,它可以立即生成数据。作业在分布式集群上运行,这需要一些时间。
您必须将输出写入某个地方,通常是写入一个数据库,然后您可以从web应用程序中查询该数据库。您的作业不是从web应用程序开始的,而是应该根据应用程序的需要来安排。
如果您是从java、scala或python作业中运行作业,则可以直接检索其结果。对于php,我不太确定。

相关问题