JAVA代码实现编程式提交Spark任务

本文记录了三种使用Java编程式提交Spark任务的方法:1) 直接调用SparkSubmit的main方法;2) 使用SparkLauncher的launch或startApplication方法;3) 通过RestSubmissionClient的run方法。特别指出,使用RestSubmissionClient时注意Rest URL端口为6066。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种方法作为记录:

1)直接调用SparkSubmit的main方法

2)SparkLauncher类的launch方法或者startApplication方法

3)使用RestSubmissionClient的run方法

SparkSubmit提交任务

	String[] param = {
				"--class", "org.apache.spark.examples.SparkPi",
				"--master", "local[2]",
				"/bigdata/spark-2.4.6-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.6.jar",
		};

		SparkSubmit.main(param);

		System.out.println("任务运行完成。。。。。。。。。");

可见,基本上就是把spark-submit脚本放到了java中执行!

但是要注意:(Rest URL端口是6066

 "--master", "spark://192.168.0.181:6066"

SparkLauncher提交任务

public static void main(String[] args) throws Exception {
        HashMap<String, String> envParams = new HashMap<>();
        envParams.put("YARN_CONF_DIR", "/home/hadoop/cluster/hadoop-release/etc/hadoop");
        envParams.put("HADOOP_CONF_DIR", "/home/hadoop/cluster/hadoop-release/etc/hadoop");
        envParams.put("SPARK_HOME", "/home/hadoop/cluster/spark-new");
        envParams.put("SPARK_PRINT_LAUNCH_COMMAND", "1");

        SparkAppHandle spark = new SparkLauncher(envParams)
                .setAppResource("/home/hadoop/cluster/spark-new/examples/jars/spark-examples_2.11-2.2.1.jar")
                .setMainClass("org.apache.spark.examples.SparkPi")
                .setMaster("yarn")
                .startApplication();

        Thread.sleep(100000);
    }

RestSubmissionClient的run方法提交

@Test
    public void submit() {
        String appResource = "hdfs://192.168.0.181:8020/opt/guoxiang/wordcount.jar";
        String mainClass = "com.fly.spark.WordCount";
        String[] args = {
                "hdfs://192.168.0.181:8020/opt/guoxiang/wordcount.txt",
                "hdfs://192.168.0.181:8020/opt/guoxiang/wordcount"
        };

        SparkConf sparkConf = new SparkConf();
        // 下面的是参考任务实时提交的Debug信息编写的
        sparkConf.setMaster("spark://192.168.0.181:6066")
                .setAppName("carabon" + " " + System.currentTimeMillis())
                .set("spark.executor.cores", "4")
                .set("spark.submit.deployMode", "cluster")
                .set("spark.jars", appResource)
                .set("spark.executor.memory", "1g")
                .set("spark.cores.max", "4")
                .set("spark.driver.supervise", "false");
        Map<String, String> env = System.getenv();

        CreateSubmissionResponse response = null;
        try {
            response = (CreateSubmissionResponse)
                    RestSubmissionClient.run(appResource, mainClass, args, sparkConf, new HashMap<>());
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(response.toJson());
    }

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值