【问题标题】:How to get output after running Apache Spark job on web如何在 web 上运行 Apache Spark 作业后获取输出
【发布时间】:2014-10-11 13:18:36
【问题描述】:

我是一名学习 Hadoop 和 Apache Spark 的学生。我想知道如何从网络上的 Apache Spark Job 获取输出。

以下是在 web 上运行 Apache Spark Job 的简单 php 代码,因为我只是想对其进行测试。

<?php
echo shell_exec("spark-submit --class stu.ac.TestProject.App --master spark://localhost:7077 /TestProject-0.0.1-SNAPSHOT.jar");
?>

以下是 Apache Spark 作业的示例 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 模式下的运行情况。

我该如何解决?

提前感谢您的回答,并为我糟糕的英语感到抱歉。如果您不理解我的问题,请发表评论。

【问题讨论】:

    标签: java web-services hadoop apache-spark


    【解决方案1】:

    可以这么说,作业的输出留在作业中。即使 Spark 速度很快,它也没有快到可以立即生成数据的程度。作业在分布式集群上运行,这需要一些时间。

    您必须将输出写入某处,通常是写入数据库,然后您可以从您的 Web 应用程序中查询该数据库。您不会从您的 Web 应用程序开始您的工作,而是应该根据您的应用程序的需要来安排它。

    如果您在 Java、Scala 或 Python 作业中运行作业,则可以直接检索其结果。使用 PHP 我不太确定。

    【讨论】:

    • 我想在作业完成后得到输出。如果我将输出写入数据库如何知道工作结束?
    • 如果您只是想显示作业的 Java System.out,您应该寻找有关此的答案,这不是 Spark 特有的。否则,您将显示数据库中当前的内容并按计划运行作业。
    • 这个问题与 Spark 有关,因为我测试了提交输出的 'echo shell_exec("ls -al"' 但 'echo shell_exec("spark-submit --class ssm.pnu.TestP.... ")' 不起作用。
    • ls 是一个命令行工具。您是否尝试过执行非 Spark Java 应用程序?
    • 啊..你是对的。这是我不知道的错误。
    【解决方案2】:

    您可以将JobServer Api 用于 Apache Spark

    【讨论】:

      猜你喜欢
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2018-10-29
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      相关资源
      最近更新 更多