Serialization of the hadoop2.2.0 MapReduce

Source: Internet
Author: User

Package Com.my.hadoop.mapreduce.dataformat;

Import Java.io.DataInput;
Import Java.io.DataOutput;
Import java.io.IOException;

Import org.apache.hadoop.conf.Configuration;
Import Org.apache.hadoop.fs.Path;
Import org.apache.hadoop.io.LongWritable;
Import Org.apache.hadoop.io.Text;
Import org.apache.hadoop.io.Writable;
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.output.FileOutputFormat;
Import Org.apache.hadoop.util.GenericOptionsParser;

Import Com.my.hadoop.common.Configs;



/**
* The serialization of Hadoop
* @author Yao
*
*/
public class Datacount {

Static class Dtmap extends Mapper<longwritable, text, text, databean>{
Databean Databean = null;
@Override
public void Map (longwritable key, Text value, Context context) throws IOException, Interruptedexception {
string[] fields = Value.tostring (). Split ("\ t");
String Telno = fields[1];
Long uppayload = Long.parselong (fields[8]);
Long downpayload = Long.parselong (fields[9]);
Databean = new Databean (Telno, Uppayload, downpayload);
Context.write (New Text (Telno), Databean);
}
}

Static class Dtreduce extends Reducer<text, Databean, Text, databean>{
@Override
public void reduce (Text key, iterable<databean> Databeans, Context context) throws IOException, interruptedexception {
Long uppayload = 0;
Long downpayload = 0;
for (Databean Databean:databeans) {
Uppayload + = Databean.getuppayload ();
Downpayload + = Databean.getdownpayload ();
}
Databean Databean = new Databean ("", Uppayload, Downpayload);
Context.write (key, Databean);
}
}

public static void Main (string[] args) throws Exception {
Configuration conf = configs.getconfiginstance ();

string[] paths = new Genericoptionsparser (conf, args). Getremainingargs ();
if (paths.length! = 2) {
System.err.println ("Usage:" + DataCount.class.getName () + "<in> <out>");
System.exit (2);
}

Job Job = job.getinstance (conf, DataCount.class.getSimpleName ());
Job.setjarbyclass (Datacount.class); Set the class where the main function is located

Fileinputformat.setinputpaths (Job, New Path (Args[0]));
Job.setmapperclass (Dtmap.class);
Job.setmapoutputkeyclass (Text.class);
Job.setmapoutputvalueclass (Databean.class);

Job.setreducerclass (Dtreduce.class);
Job.setoutputkeyclass (Text.class);
Job.setoutputvalueclass (Databean.class);
Fileoutputformat.setoutputpath (Job, New Path (Args[1]));

System.exit (Job.waitforcompletion (true)? 0:1); Wait for MapReduce to complete and print job progress details

}

}

/**
* Implement writable interface, rewrite Write method and ReadFields method, write out strictly in field order
* @author Yao
*
*/
Class Databean implements writable {

Private String Telno;
Private long uppayload;
Private long downpayload;
Private long totalpayload;

Public Databean () {

}

Public Databean (String Telno, Long uppayload, long downpayload) {
Super ();
This.telno = Telno;
This.uppayload = Uppayload;
This.downpayload = Downpayload;
This.totalpayload = Uppayload + downpayload;
}

@Override
public void ReadFields (Datainput in) throws IOException {
This.telno = In.readutf ();
This.uppayload = In.readlong ();
This.downpayload = In.readlong ();
This.totalpayload = In.readlong ();
}

@Override
public void Write (DataOutput out) throws IOException {
Out.writeutf (Telno);
Out.writelong (Uppayload);
Out.writelong (Downpayload);
Out.writelong (Totalpayload);
}

@Override
Public String toString () {
return this.telno+ "\ t" +this.uppayload+ "\ T" +this.downpayload+ "\ T" +this.totalpayload;
}

Public String Gettelno () {
return telno;
}

public void Settelno (String telno) {
This.telno = Telno;
}

Public long getuppayload () {
return uppayload;
}

public void Setuppayload (long uppayload) {
This.uppayload = Uppayload;
}

Public long getdownpayload () {
return downpayload;
}

public void Setdownpayload (long downpayload) {
This.downpayload = Downpayload;
}

Public long gettotalpayload () {
return totalpayload;
}

public void Settotalpayload (long totalpayload) {
This.totalpayload = Totalpayload;
}

}

Serialization of the hadoop2.2.0 MapReduce

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.