java – 是否可以从代码中运行spark yarn cluster?

我有一个MapReduce任务,我想从我的
java代码在Spark YARN集群上运行.另外,我想在我的java代码中检索reduce结果(字符串和数字对,元组).就像是:

// I know, it's wrong setMaster("YARN"), but just to describe what I want.
// I want to execute job ob the cluster.
SparkConf sparkConf = new SparkConf().setAppName("Test").setMaster("YARN");
JavaSparkContext sc = new JavaSparkContext(sparkConf);

JavaRDD<Integer> input = sc.parallelize(list);

// map
JavaPairRDD<String, Integer> results = input.mapToPair(new MapToPairExample());

// reduce
String max = results.max(new MyResultsComparator())._1();

如果我将master设置为local,local []或spark:// master:7707,它就可以工作.

所以问题是:我能以某种方式对纱线集群做同样的事情吗?

最佳答案 你需要使用spark-submit来做到这一点. Spark提交处理许多事情,从发送依赖关系到集群并设置正确的类路径等.

当您在本地模式下将其作为主java程序运行时,IDE将负责类路径(因为驱动程序/执行程序在同一个jvm中运行).

如果您希望在计算机上运行驱动程序,也可以使用“yarn-client”模式.

对于纱线群集模式,请使用.setMaster(“yarn-cluster”)

点赞