2014-02-11 2 views
0

나는 chaning 작업을 수행하려고합니다.MapReduce의 args [0] 값에 액세스

그래서 어떤 점에서는 args (public static void main(String[] args))에 액세스하려고합니다.

매퍼의 args [0]입니다.

mapper에서 값을 액세스하고 액세스하여 기능에 액세스하고 액세스하는 방법이 있습니까? 대체 솔루션

conf.set("args", args[1]); 
job1.setJarByClass(BinningDriver.class); 
FileSystem fs1 = FileSystem.get(conf); 
job1.setOutputKeyClass(Text.class); 
job1.setOutputValueClass(Text.class); 
job1.setMapperClass(BinningInput.class); 
job1.setInputFormatClass(TextInputFormat.class); 
job1.setOutputFormatClass(TextOutputFormat.class); 
Path out = new Path(args[1]+"/Indexing"); //Output goes to user output location/indexing 
if(fs1.exists(out)){ 
    fs1.delete(out,true); 
} 

FileInputFormat.addInputPath(job1, new Path(args[0])); 
FileOutputFormat.setOutputPath(job1, out); 
} 

매퍼

public void setup(Context context){ 
Configuration conf = context.getConfiguration(); 
String param = conf.get("args"); 
System.out.println("args:"+param); 
    } 

+0

[0] : 분산 캐시를 사용하는 방법에 대한 자세한 내용은

Set<String> lines; public void configure(JobConf job){ lines = new HashSet<>(); BufferedReader SW; try { localFiles = DistributedCache.getLocalCacheFiles(job); SW = new BufferedReader(new FileReader(localFiles[0].toString())); lines.add(SW.readLine()); SW.close(); } catch (FileNotFoundException e) { System.err.println(e.toString()); } catch (IOException e) { System.err.println(e.toString()); } } 

를, API를 참조? 당신은'public static void main (String [] args)'을 참조하고 있습니까? –

+0

예. 정확하게 그 값에 대해 얘기하고 있습니다. –

+0

매퍼가 메인을 실행하는 JVM과 완전히 다른 JVM에서 실행될 확률이 높다는 것을 알고 있습니까? –

답변

1

인수 []는 클래스 드라이버의 주요 기능의 입력 파라미터 작품. 이 매개 변수에 액세스하는 유일한 방법은 드라이버 내에서하는 것입니다 (이 매개 변수의 범위는 주 기능입니다). 따라서이를 매퍼에 전달하려면 매개 변수로 전달해야합니다 (예 :이 정보를 분산 캐시에 추가하고 매퍼 구성에서 가져 오기).

당신은 단순히 몇 가지 매개 변수를 전달 this article을 확인하고, 어떤 인수에 관심이 있습니다. 인수 [2], 또는으로 "123"를 바꾸려면

는 처리를 위해 전체 파일을 전달하려면

,

예 :

드라이버 클래스

주요 방법 :지도 전에 매퍼에서

public static void main(String[] args) { 
    ... 
    FileInputFormat.setInputPaths(conf, new Path(args[0]));  
    FileOutputFormat.setOutputPath(conf, new Path(args[1])); 
    ... 
    try { 
     DistributedCache.addCacheFile(new URI(args[2]), conf);   
    } catch (URISyntaxException e) { 
     System.err.println(e.toString()); 
    } 
    .... 
} 

,() 메타 다음을 수행 OD (내가 하둡 1.2.0을 사용하고 있습니다) 구성 방법 정의 : 인수 무엇 http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/DistributedCache.html

+0

답장을 보내 주셔서 감사합니다. Vefthym.can u 작은 예제를 보여주십시오. –

+0

답을 업데이트했습니다. 나는 그것이 도움이되기를 바랍니다 – vefthym

+0

Pls 내 업데이트를 참조하십시오 –