使用java代码提交flink job 任务

以下代码是使用java程序客户端提交flink job的示例代码

package client;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.JobID;
import org.apache.flink.client.deployment.StandaloneClusterId;
import org.apache.flink.client.program.PackagedProgram;
import org.apache.flink.client.program.PackagedProgramUtils;
import org.apache.flink.client.program.rest.RestClusterClient;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.configuration.JobManagerOptions;
import org.apache.flink.configuration.RestOptions;
import org.apache.flink.core.fs.Path;
import org.apache.flink.runtime.jobgraph.JobGraph;
import org.apache.flink.runtime.jobgraph.JobVertex;
import org.apache.flink.runtime.jobgraph.SavepointRestoreSettings;
import org.apache.flink.runtime.jobgraph.tasks.AbstractInvokable;
import org.apache.flink.streaming.api.graph.StreamGraph;

import java.io.File;
import java.util.ArrayList;
import java.util.concurrent.CompletableFuture;


/**
 * @ClassName FlinkClient
 * @Description TODO
 * @Author Getech
 * @Date 2021/6/24 17:59
 */
public class FlinkClient {

    public static void main(String[] args) {
        String jarFilePath = "D:\\02develop\\2020workspace\\apache-flink\\example\\WordCountSQL.jar";
        RestClusterClient<StandaloneClusterId> client = null;
        try {
            // 集群信息
            Configuration configuration = new Configuration();
            configuration.setString(JobManagerOptions.ADDRESS, "10.8.4.129");
            configuration.setInteger(JobManagerOptions.PORT, 6123);
            configuration.setInteger(RestOptions.PORT, 8081);
            client = new RestClusterClient<StandaloneClusterId>(configuration, StandaloneClusterId.getInstance());
            int parallelism = 1;
            File jarFile=new File(jarFilePath);
            SavepointRestoreSettings savepointRestoreSettings=SavepointRestoreSettings.none();
            PackagedProgram program = PackagedProgram.newBuilder()
                    .setConfiguration(configuration)
                    .setEntryPointClassName("org.apache.flink.table.examples.java.WordCountSQL")
                    .setJarFile(jarFile)
                    .setSavepointRestoreSettings(savepointRestoreSettings).build();
            JobGraph jobGraph=PackagedProgramUtils.createJobGraph(program,configuration,parallelism,false);
            CompletableFuture<JobID> result = client.submitJob(jobGraph);
            JobID jobId=  result.get();
            System.out.println("提交完成");
            System.out.println("jobId:"+ jobId.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

 

 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要将任务提交到已启动的 Flink 服务上执行,可以使用 Flink 提供的命令行工具或编写代码来进行提交。 1. 使用命令行工具提交任务: - 打开终端或命令提示符,并进入 Flink 的安装目录。 - 使用以下命令提交任务: ``` ./bin/flink run -m <flink-master-address:port> -c <main-class> <jar-file> [arguments] ``` 其中,`<flink-master-address:port>` 是 Flink 主节点的地址和端口(例如,localhost:8081),`<main-class>` 是包含任务入口点的主类名,`<jar-file>` 是包含任务代码的 JAR 文件,`[arguments]` 是可选的任务参数。 2. 使用 Java 代码提交任务: - 在 Java 项目中,确保已添加 Flink 的依赖。 - 编写代码以配置和提交任务,例如: ```java import org.apache.flink.api.common.ExecutionConfig; import org.apache.flink.api.common.JobExecutionResult; import org.apache.flink.api.java.ExecutionEnvironment; public class SubmitJobExample { public static void main(String[] args) throws Exception { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); // 设置并行度 // 构建任务逻辑 // ... JobExecutionResult result = env.execute(); // 处理任务执行结果 // ... } } ``` - 在代码中指定 Flink 主节点的地址和端口,例如: ```java env.execute("localhost:8081"); ``` - 构建并运行代码,它将连接到指定的 Flink 主节点并提交任务。 无论使用命令行工具还是编写代码,都需要确保 Flink 服务已启动并正在运行,并且能够与 Flink 服务通信。任务提交后,Flink 将根据配置在集群中执行任务,并返回相应的执行结果。 请注意,在提交任务之前,您需要编写或准备好包含任务逻辑的 JAR 文件,并确保 Flink 集群能够访问该文件。此外,还可以根据任务的需求和配置来设置其他参数,如并行度、资源配置等。详细信息可以参考 Flink 官方文档中关于任务提交的部分。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成伟平2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值