/* * Copyright 2009-2013 by The Regents of the University of California * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * you may obtain a copy of the License from * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package edu.uci.ics.pregelix.example.utils; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.FileInputFormat; import org.apache.hadoop.mapred.FileOutputFormat; import org.apache.hadoop.mapred.JobClient; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.MapReduceBase; import org.apache.hadoop.mapred.Mapper; import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.mapred.Reporter; import org.apache.hadoop.mapred.TextInputFormat; import org.apache.hadoop.mapred.TextOutputFormat; @SuppressWarnings("deprecation") public class DuplicateGraph { public static class MapRecordOnly extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { static long largestId = 172655479; static long largestId2 = 172655479 * 2; static long largestId3 = 172655479 * 3; public void map(LongWritable id, Text inputValue, OutputCollector<Text, Text> output, Reporter reporter) throws IOException { StringTokenizer tokenizer = new StringTokenizer(inputValue.toString()); String key = tokenizer.nextToken(); long keyLong = Long.parseLong(key); String key2 = Long.toString(keyLong + largestId); String key3 = Long.toString(keyLong + largestId2); String key4 = Long.toString(keyLong + largestId3); StringBuilder value = new StringBuilder(); StringBuilder value2 = new StringBuilder(); StringBuilder value3 = new StringBuilder(); StringBuilder value4 = new StringBuilder(); while (tokenizer.hasMoreTokens()) { String neighbor = tokenizer.nextToken(); long neighborLong = Long.parseLong(neighbor); value.append(neighbor + " "); value2.append((neighborLong + largestId) + " "); value3.append((neighborLong + largestId2) + " "); value4.append((neighborLong + largestId3) + " "); } output.collect(new Text(key), new Text(value.toString().trim())); output.collect(new Text(key2), new Text(value2.toString().trim())); output.collect(new Text(key3), new Text(value3.toString().trim())); output.collect(new Text(key4), new Text(value4.toString().trim())); } } public static void main(String[] args) throws IOException { JobConf job = new JobConf(DuplicateGraph.class); job.setJobName(DuplicateGraph.class.getSimpleName()); job.setMapperClass(MapRecordOnly.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(Text.class); job.setInputFormat(TextInputFormat.class); job.setOutputFormat(TextOutputFormat.class); job.setInputFormat(TextInputFormat.class); FileInputFormat.setInputPaths(job, args[0]); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setNumReduceTasks(0); JobClient.runJob(job); } }