[HADOOP] JobConf를 사용하지 않고 Hadoop 작업 실행
HADOOPJobConf를 사용하지 않고 Hadoop 작업 실행
Deprecated JobConf 클래스를 사용하지 않는 Hadoop 작업을 제출하는 한 가지 예는 찾을 수 없습니다. Deprecated되지 않은 JobClient는 여전히 JobConf 매개 변수를 사용하는 메소드 만 지원합니다.
누군가가 Hadoop 맵을 제출하는 Java 코드 / Job 클래스를 사용하여 작업을 줄이고 (예 : JobConf가 아닌) mapred.lib.input 대신 mapreduce.lib.input 패키지를 사용하여 Java 코드 예제를 가르쳐 주시겠습니까?
해결법
-
==============================
1.희망이 도움이
희망이 도움이
import java.io.File; import org.apache.commons.io.FileUtils; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; public class MapReduceExample extends Configured implements Tool { static class MyMapper extends Mapper<LongWritable, Text, LongWritable, Text> { public MyMapper(){ } protected void map( LongWritable key, Text value, org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, LongWritable, Text>.Context context) throws java.io.IOException, InterruptedException { context.getCounter("mygroup", "jeff").increment(1); context.write(key, value); }; } @Override public int run(String[] args) throws Exception { Job job = new Job(); job.setMapperClass(MyMapper.class); FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.waitForCompletion(true); return 0; } public static void main(String[] args) throws Exception { FileUtils.deleteDirectory(new File("data/output")); args = new String[] { "data/input", "data/output" }; ToolRunner.run(new MapReduceExample(), args); } }
-
==============================
2.이 튜토리얼에서는 Hadoop 0.20.1을 사용하여 더 이상 사용되지 않는 JobConf 클래스를 제거하는 방법을 보여 준다.
이 튜토리얼에서는 Hadoop 0.20.1을 사용하여 더 이상 사용되지 않는 JobConf 클래스를 제거하는 방법을 보여 준다.
-
==============================
3.다음은 다운로드 할 수있는 코드 예제입니다. http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html 2 년이 넘었으며 새로운 API에 대해 공식적인 문서가 없습니다. 슬퍼.
다음은 다운로드 할 수있는 코드 예제입니다. http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html 2 년이 넘었으며 새로운 API에 대해 공식적인 문서가 없습니다. 슬퍼.
-
==============================
4.이전 API에서는 작업을 제출하는 세 가지 방법이 있었고 그 중 하나는 작업을 제출하고 RunningJob에 대한 참조를 얻고 RunningJob의 ID를 얻는 것입니다.
이전 API에서는 작업을 제출하는 세 가지 방법이 있었고 그 중 하나는 작업을 제출하고 RunningJob에 대한 참조를 얻고 RunningJob의 ID를 얻는 것입니다.
submitJob(JobConf) : only submits the job, then poll the returned handle to the RunningJob to query status and make scheduling decisions.
어떻게 새로운 Api를 사용할 수 있고 RunningJob에 대한 참조를 얻고 실행 홉의 ID를 얻을 수 있습니까? API 중 어느 것도 RunningJob에 대한 참조를 반환하지 않습니다.
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Job.html
감사
-
==============================
5.구성 및 작업을 사용해보십시오. 다음은 그 예입니다.
구성 및 작업을 사용해보십시오. 다음은 그 예입니다.
(매퍼, 콤비네이터, 감속기 클래스 및 기타 구성을 교체하십시오)
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; public class WordCount { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { Configuration conf = new Configuration(); if(args.length != 2) { System.err.println("Usage: <in> <out>"); System.exit(2); } Job job = Job.getInstance(conf, "Word Count"); // set jar job.setJarByClass(WordCount.class); // set Mapper, Combiner, Reducer job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); /* Optional, set customer defined Partioner: * job.setPartitionerClass(MyPartioner.class); */ // set output key job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); // set input and output path FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); // by default, Hadoop use TextInputFormat and TextOutputFormat // any customer defined input and output class must implement InputFormat/OutputFormat interface job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
from https://stackoverflow.com/questions/2115292/run-hadoop-job-without-using-jobconf by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] `yarn.scheduler.maximum-allocation-mb`와`yarn.nodemanager.resource.memory-mb`의 차이점은 무엇입니까? (0) | 2019.06.14 |
---|---|
[HADOOP] Airflow에서 실패한 작업을 다시 시작하는 방법 (0) | 2019.06.14 |
[HADOOP] Hadoop / Hive : 로컬 컴퓨터에서 .csv의 데이터로드 (0) | 2019.06.14 |
[HADOOP] Hadoop이 String이나 Integer 대신에 Text 나 IntWritable 같은 클래스를 필요로하는 이유는 무엇입니까? (0) | 2019.06.13 |
[HADOOP] '지도 만'hadoop 작업을 작성하는 방법? (0) | 2019.06.13 |