2011-11-23 16 views
14

Używam new Hadoop API i szukam sposobu przekazania niektórych parametrów (kilka ciągów) do twórców map.
Jak mogę to zrobić?Przekazywanie argumentów programistom Hadoop

This solutions works for old API:

JobConf job = (JobConf)getConf(); 
job.set("NumberOfDocuments", args[0]); 

Tutaj „NumberOfDocuments” jest nazwą parametru a jego wartość jest odczytywana z „args[0]„, argument wiersza poleceń. Po ustawieniu tej argumentacji, można pobrać jego wartość w reduktorze lub odwzorowującym następująco:

private static Long N; 
public void configure(JobConf job) { 
    N = Long.parseLong(job.get("NumberOfDocuments")); 
} 

pamiętać, że trudne jest to, że nie można ustawić parametry jak poniżej:

Configuration con = new Configuration(); 
con.set("NumberOfDocuments", args[0]); 
+0

zarówno nowe i stare metody są tutaj: http://www.thecloudavenue.com/2011/11/passing-parameters-to- mappers-and.html – weefwefwqg3

Odpowiedz

38

W głównej metody ustaw wymagany parametr jak poniżej lub użyj -D command line option podczas uruchamiania zadania.

Configuration conf = new Configuration(); 
conf.set("test", "123"); 

Job job = new Job(conf); 

W mapper/reduktora uzyskać parametr jako

Configuration conf = context.getConfiguration(); 
String param = conf.get("test"); 
+0

i czy chcemy przekazać do programu odwzorowującego parametr liczby całkowitej? – MTT

+0

VTT - obiekt konfiguracyjny ma setery bezpieczne: setBoolean/setDouble/setEnum/etc ... są również odpowiednie moduły pobierające. –

+1

Próbuję ustawić tablicę, ale nie mogę w inny sposób mogę to zrobić? – tosi

Powiązane problemy