如何使用 AWS java SDK 使用 AWS 胶水作业自动生成脚本

Swa*_*hid 5 aws-java-sdk aws-glue aws-java-sdk-2.x

我正在使用 Java Sdk 创建胶水作业。它只有两个必需的参数 Command 和 Glue 版本。但我需要通过自动脚本生成来创建工作。正如我们可以从控制台执行的那样,我们添加数据源、AWS Glue 生成的建议脚本、转换类型、数据目标、架构等。如何使用 java sdk 或什至使用 awsglue api 将这些参数添加到胶水作业中。

           CreateJobRequest req = new CreateJobRequest();
            req.setName("TestJob2");
            req.setRole("GlueS3Role");
            req.setGlueVersion("1.0");
            JobCommand command = new JobCommand();
            command.setName("glueetl");
            command.setPythonVersion("3");
            **// S3 location need not to be given, as script code is auto generated by AWS glue
           command.setScriptLocation(S3ScriptLocation);**
            req.setCommand(command);

            AWSGlue glueClient = AWSGlueClientBuilder.standard()
                                 .withRegion(Regions.US_EAST_1)
                                 .withCredentials(new AWSStaticCredentialsProvider(creds))
                                 .build();

            glueClient.createJob(req);
        }
Run Code Online (Sandbox Code Playgroud)

小智 1

我希望 AWS Glue 客户端和触发作业的逻辑的实现将有助于以同样的方式实现胶水作业的自动生成。

胶水客户端:

public GlueClient createClient() {
        return GlueClient.builder()
                .region(Region.of(regionName))
                .credentialsProvider(ProfileCredentialsProvider.create(profileName)).build();
Run Code Online (Sandbox Code Playgroud)

涂胶工作流道:

public static String runGlueJob(GlueClient glueClient, String jobName, Map<String, String> glueArguments) {

        StartJobRunResponse response = glueClient.startJobRun(StartJobRunRequest.builder().jobName(jobName).arguments(glueArguments).build());
        String jobId = response.jobRunId();
        logger.info("JobId: " + jobId);

        return jobId;

    }

Run Code Online (Sandbox Code Playgroud)

要创建新的 AWS Glue 作业定义,我们可以执行以下操作:

CreateJobResult jobResult = glueClient.createJob(CreateJobRequest.builder()
                .command(JobCommand.builder().pythonVersion("").scriptLocation("").name("").build())
                .defaultArguments()
                .description()
                .glueVersion()
                .logUri()
                .name()
                .numberOfWorkers()
                .role()
                .tags()
                .build());            

Run Code Online (Sandbox Code Playgroud)

然后触发作业

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/glue/AWSGlueClient.html