[HADOOP] 분산 캐시를 하둡 어떻게 코드에서 외부 항아리를 사용하는 방법 : -libjars를 사용하여
HADOOP분산 캐시를 하둡 어떻게 코드에서 외부 항아리를 사용하는 방법 : -libjars를 사용하여
좋아 나는 ilibjars 경로를 사용하여 내 코드에 외부 항아리를 추가 할 수 있어요. 이제 내 코드에서 외부 항아리를 사용하는 방법에 대해 설명합니다. 내가 문자열에서 작동하는 항아리에 정의 된 함수를 말한다. 사용 방법. context.getArchiveClassPaths를 사용하여 (), 나는 그것을 경로를 얻을 수 있습니다하지만 난 그 객체를 생성하는 방법을 모르겠어요.
여기에 내가 수입하고있는 샘플 항아리 클래스입니다
package replace;
public class ReplacingAcronyms {
public static String Replace(String abc){
String n;
n="This is trial";
return n;
}
}
public class wc_runner extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
Job job = new Job(new Configuration());
job.setJarByClass(wc_runner.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(wc_mapper.class);
job.setCombinerClass(wc_reducer.class);
job.setReducerClass(wc_reducer.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.setInputPaths(job,new Path(args[0]));
FileOutputFormat.setOutputPath(job,new Path(args[1]));
return (job.waitForCompletion(true)?0:1);
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new wc_runner(), args);
System.exit(exitCode);
}
}
명령 실행
[training@localhost Desktop]$ export HADOOP_CLASSPATH=file:///home/training/Desktop/replace.jar
[training@localhost Desktop]$ hadoop jar try1.jar wc_runner /user/training/MR/custom/trial1 /user/training/MR/custom/out -libjars ./replace.jar
오류
14/03/08 02:39:40 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/03/08 02:39:41 INFO input.FileInputFormat: Total input paths to process : 1
14/03/08 02:39:41 WARN snappy.LoadSnappy: Snappy native library is available
14/03/08 02:39:41 INFO snappy.LoadSnappy: Snappy native library loaded
14/03/08 02:39:41 INFO mapred.JobClient: Running job: job_201403080114_0021
14/03/08 02:39:42 INFO mapred.JobClient: map 0% reduce 0%
14/03/08 02:39:46 INFO mapred.JobClient: Task Id : attempt_201403080114_0021_m_000000_0, Status : FAILED
Error: java.lang.ClassNotFoundException: replace.ReplacingAcronyms
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190
해결법
-
==============================
1.다음 mapred 작업을 실행하기 전에 HADOOP_CLASSPATH에 jar 파일의 경로를 추가하려면 mapred 코드 패키지를 가져옵니다.
다음 mapred 작업을 실행하기 전에 HADOOP_CLASSPATH에 jar 파일의 경로를 추가하려면 mapred 코드 패키지를 가져옵니다.
예를 들면 당신의 mapred 자바에서
import your.external.package;
컴파일에
javac -cp /path/to/your/external/package.jar:...
하둡 항아리를 실행에
export HADOOP_CLASSPATH=/path/to/your/external/package.jar hadoop jar yourmapred.jar your.class -libjar /path/to/your/external/package.jar ....
from https://stackoverflow.com/questions/22245425/hadoop-distributed-cache-using-libjars-how-to-use-external-jars-in-your-cod by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 내 맵리 듀스 프로그램은 제로 출력을 생성 (0) | 2019.10.15 |
---|---|
[HADOOP] 하둡 MR / 돼지의 작업에 배관 데이터 (0) | 2019.10.15 |
[HADOOP] Cygwin에서에서 하둡에 대한 네임 노드를 시작할 수 없습니다 (0) | 2019.10.15 |
[HADOOP] 하둡 단어 수 예제 erreor : 1의 제로가 아닌 상태로 작업 프로세스 종료 (0) | 2019.10.15 |
[HADOOP] 라이브러리 0.0.8 실행 프로그램 오류와 메소 0.21.0에 하둡 2.5.0 (0) | 2019.10.15 |