Создание EMR кластера с использованием Java - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь создать кластер EMR с использованием Java.Я создал файл jar и поместил его в лямбда-функцию.Я звоню лямбда из функций AWS Step.Я создал пакет maven, включающий зависимости AWS JAVA SDK, а также импортировал все пакеты

 import java.io.IOException;
 import com.amazonaws.auth.*;
 import com.amazonaws.auth.BasicAWSCredentials;
 import com.amazonaws.auth.PropertiesCredentials;
 import com.amazonaws.services.elasticmapreduce.*;
 import com.amazonaws.services.elasticmapreduce.model.AddJobFlowStepsRequest;
 import com.amazonaws.services.elasticmapreduce.model.AddJobFlowStepsResult;
 import com.amazonaws.services.elasticmapreduce.model.RunJobFlowRequest;
 import com.amazonaws.services.elasticmapreduce.model.*;
 import com.amazonaws.services.elasticmapreduce.model.HadoopJarStepConfig;
 import com.amazonaws.services.elasticmapreduce.model.StepConfig;
 import com.amazonaws.services.elasticmapreduce.util.StepFactory;
 import com.amazonaws.AmazonServiceException;
 import com.amazonaws.auth.AWSCredentials;
 import com.amazonaws.auth.BasicAWSCredentials;

открытый класс CreateCluster {

public static void main(String[] args) {
    AWSCredentials credentials = new BasicAWSCredentials("access key", "secret key");
    // myApp={[Hadoop]};
    AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
    String COMMAND_RUNNER = "command-runner.jar";
    String DEBUGGING_COMMAND = "state-pusher-script";
    String DEBUGGING_NAME = "Setup Hadoop Debugging";

    StepFactory stepFactory = new StepFactory();

    StepConfig enabledebugging = new StepConfig()
            .withName(DEBUGGING_NAME)
            .withActionOnFailure(ActionOnFailure.TERMINATE_CLUSTER)
            .withHadoopJarStep(new HadoopJarStepConfig()
                    .withJar(COMMAND_RUNNER)
                    .withArgs(DEBUGGING_COMMAND));

    RunJobFlowRequest request = new RunJobFlowRequest()
            .withName("REMR")
            .withReleaseLabel("emr-5.16.0")
            .withSteps(enabledebugging)
            //  .withApplications(myApp)
            .withLogUri("s3n://r.base.ihm/emr-log/")
            .withServiceRole("service_role")
            .withJobFlowRole("jobflow_role")
            .withInstances(new JobFlowInstancesConfig()
                    .withEc2KeyName("emr")
                    .withEc2SubnetId("subnet-d1fbb8ee")
                    .withInstanceCount(3)
                    .withKeepJobFlowAliveWhenNoSteps(false)
                    .withMasterInstanceType("m4.large")
                    .withSlaveInstanceType("m4.large"));

    RunJobFlowResult result = emr.runJobFlow(request);

}

}, но все равно получаю ошибку

java.lang.NoClassDefFoundError

{"errorMessage": "Ошибка загрузки класса com.ihm.base.spark.CreateCluster: com / amazonaws / auth / AWSCredentials", "errorType":"java.lang.NoClassDefFoundError"}

Есть идеи, что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...