2014-09-09 5 views
0

AWS SWF 워크 플로를 작성했으며 첫 번째 작업은 클러스터를 부팅하고 mapreduce 프로그램을 실행하는 것입니다. 이 동작은 첫 번째 항아리의 출력에 따라 실행될 2 개의 다른 mapreduce 항아리와 같습니다. 나는 이것을 사용하여 항아리를 추가했습니다.HadoopJarStepConfig를 사용하여 여러 작업을 추가하는 방법이 있습니까? jarConfig = new HadoopJarStepConfig (HADOOP_JAR);

HadoopJarStepConfig jarConfig = new HadoopJarStepConfig(S3N_HADOOP_JAR); 
    jarConfig.setArgs(ARGS_AS_LIST); 
    HadoopJarStepConfig jarConfig1 = new HadoopJarStepConfig(S3N_HADOOP_JAR); 
    jarConfig1.setArgs(ARGS_AS_LIST1); 
    try { 
     StepConfig enableDebugging = new StepConfig() 
       .withName("Enable debugging") 
       .withActionOnFailure("TERMINATE_JOB_FLOW") 
       .withHadoopJarStep(new StepFactory().newEnableDebuggingStep()); 
     StepConfig runJar = new StepConfig(HADOOP_JAR, jarConfig); 
     StepConfig runJar1 = new StepConfig(HADOOP_JAR, jarConfig1); 
     request.setSteps(Arrays.asList(new StepConfig[]{enableDebugging, runJar, runJar1})); 
     RunJobFlowResult result = emr.runJobFlow(request); 

여러 개의 병을 추가하는 올바른 방법입니까? 감사.

답변

0

사용 :

request.withSteps (enableDebugging, runJar, runJar1);

는 사용하지 마십시오

새로운 StepConfig [] {enableDebugging, runJar, runJar1})); 잘못되었습니다, 당신은 여기에 다시 SpetConfig가 필요하지 않습니다 ..

+0

나는이 단계를 사용하여 EMR에서 AddJob 단계의 일부로 다른 jar를 추가하도록 요청했습니다. 이것은 완벽하게 작동합니다 ... 또한 당신이 제안한 것을 확인합니다. StepConfig runJar1 = 새 StepConfig (HADOOP_JAR, jarConfig1); \t AddJobFlowStepsRequest request2 = new AddJobFlowStepsRequest (jobFlowID) .withSteps (runJar1); –