spark-shell和提交的sbt程序有什么区别

时间:2016-10-02 05:48:21

标签: shell apache-spark sbt

Spark-shell可用于与数据的分布式存储进行交互,那么spark-shell中的编码和将打包的sbt独立应用程序上传到集群操作之间的本质区别是什么?(我发现不同之处是sbt提交了在集群管理界面中可以看到作业,而且shell不行)毕竟sbt非常麻烦,而且shell非常方便。 非常感谢!

1 个答案:

答案 0 :(得分:2)

Spark-shell为您提供了一个类似于控制台的界面,您可以在其中运行您的代码,如单个命令。如果您仍在尝试使用软件包或调试代码,这将非常有用。

    import java.util.concurrent.Callable;
    import java.util.concurrent.FutureTask;

    public class FutureTask {

    public static void main(String[] args) {
        FutureTask<Integer> ft = getFutureTask();
        FutureTask<Integer> ft2 = getFutureTask();
        new Thread(ft, "有返回值的线程").start();
        new Thread(ft2, "会不会执行呢?").start();
        try{
            System.out.println("The result of ft is " + ft.get());
        }catch(Exception e){System.out.println(e);}
        try{
            System.out.println("The result of ft2 is " + ft2.get());
        }catch(Exception e){System.out.println(e);}
    }

    private static FutureTask<Integer> getFutureTask() {
        return new FutureTask<Integer>((Callable<Integer>)() -> {
            int i = 0;
            for(; i < 100; i++){
                System.out.println(Thread.currentThread().getName() + "\t"+ i);
            }
            return i;
        });
    }

实际上,火花外壳也会出现在作业用户界面中,因为&#34; Spark-Shell&#34;本身,你可以监控你正在运行的工作。

使用SBT构建spark应用程序可以为您的开发过程提供一些组织,迭代编译有助于日常开发,并且可以避免大量的手动工作。如果你总是运行一组常量的东西,你可以简单地再次运行相同的包,而不是经历像命令一样运行整个事情的麻烦。如果你是java风格的开发新手,SBT确实需要一些时间来适应,但它可以帮助长期维护应用程序。