Spark代码可以在没有spark-submit的集群上运行吗?

时间:2015-11-27 11:42:14

标签: apache-spark yarn

我想开发一个Scala应用程序,它连接一个master并运行一段代码。我想在不使用spark-submit的情况下实现这一点。这可能吗?特别是我想知道以下代码是否可以从我的机器运行并连接到集群:

private List<String> list = {"a", "b", "c", "d"}

private static String repeatAlphabet(String alphabet, int repeatCount) {
    return StringUtils.repeat(alphabet, repeatCount);
}

void Map<String, String> foo(int repeatCount) {
    Map<String, String> map = Maps.newHashMap();
    for (String alphabet : list) {
        map.put(alphabet, repeatAlphabet(alphabet, repeatCount));
    }
    return map;
}

3 个答案:

答案 0 :(得分:7)

添加conf

val conf = new SparkConf() .setAppName("Meisam") .setMaster("yarn-client") .set("spark.driver.host", "127.0.0.1");

答案 1 :(得分:4)

是的,这是可能的,基本上你所做的就是在客户端部署模式下在YARN集群上运行任务所需的一切(驱动程序在应用程序运行的机器上运行)。

spark-submit可帮助您保留代码,使其免于正确执行所需的少量SparkConf设置,例如主URL。当您保持代码不受低级细节影响时,您可以在任何Spark集群(YARN,Mesos,Spark Standalone和本地)上部署Spark应用程序,而无需重新编译它们。

答案 2 :(得分:1)

与此处所说的相反,我认为这只是部分可能,因为我最近发现了艰难的方式,就像我的Spark新手一样。虽然如上所述肯定可以连接到集群并在其上运行代码,但是当你开始做任何非常重要的事情时,你可能会遇到问题,甚至像使用UDF那样简单(用户定义的函数,AKA任何东西)尚未包含在Spark中)。看看https://issues.apache.org/jira/browse/SPARK-18075,以及其他相关的门票,最重要的是,在回复中。 此外,这似乎很有用(现在看一下):Submitting spark app as a yarn job from Eclipse and Spark Context