MapReduce程式設計例項之自定義分割槽
任務描述:
一組資料,按照年份的不同將其分別存放在不同的檔案裡
example Data:
2013 1
2013 5
2014 5
2014 8
2015 9
2015 4
Code:
package mrTest;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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.Partitioner;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class zidingyiPartition {
public static class myPartition extends Partitioner<LongWritable, LongWritable>{
public int getPartition(LongWritable key, LongWritable value, int numTaskReduces) {
// TODO Auto-generated method stub
if(key.get()==2013){
return 0;
}else if(key.get()==2014){
return 1;
}else{
return 2;
}
}
}
public static class Map extends Mapper<Object, Text, LongWritable,LongWritable>{
public void map(Object key, Text value, Context context) throws IOException, InterruptedException{
String[] line = value.toString().split("\t");
context.write( new LongWritable(Integer.parseInt(line[0])) , new LongWritable(Integer.parseInt(line[1])) );
}
}
public static class Reduce extends Reducer<LongWritable, LongWritable, LongWritable, LongWritable>{
public void reduce(LongWritable key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException{
for (LongWritable longWritable : values) {
context.write(key, longWritable);
}
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
// TODO Auto-generated method stub
Job job = new Job();
job.setJarByClass(zidingyiPartition.class);
// 1
FileInputFormat.addInputPath(job, new Path(args[0]));
// 2
job.setMapperClass(Map.class);
job.setMapOutputKeyClass(LongWritable.class);
job.setMapOutputValueClass(LongWritable.class);
// 3
job.setPartitionerClass(myPartition.class);
// 4
// 5
job.setNumReduceTasks(3);
// 6
job.setReducerClass(Reduce.class);
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(LongWritable.class);
// 7
FileOutputFormat.setOutputPath(job, new Path(args[1]));
// 8
System.exit(job.waitForCompletion(true)? 0 : 1);
}
}
結果展示:
相關文章
- MapReduce程式設計例項之自定義排序程式設計排序
- MapReduce之自定義分割槽器Partitioner
- MapReduce程式設計例項之倒排索引 1程式設計索引
- MapReduce程式設計例項之資料去重程式設計
- MapReduce程式設計實踐之自定義資料型別程式設計資料型別
- MapReduce之自定義OutputFormatORM
- MapReduce之自定義InputFormatORM
- MapReduce之自定義partitioner
- Kafka - 自定義分割槽器Kafka
- css自定義列表計數程式碼例項CSS
- hadoop mapreducez自定義分割槽Hadoop
- Qt自定義訊號槽的使用淺析+例項QT
- MapReduce框架Partitioner分割槽方法框架
- jQuery自定義標籤程式碼例項jQuery
- MapReduce(三):分割槽、排序、合併排序
- sql mode 和使用者自定義分割槽SQL
- jquery自定義事件簡單例項程式碼jQuery事件單例
- spark:自定義分割槽,自定義排序,spark與jdbc,廣播變數等Spark排序JDBC變數
- SQL Server 2005分割槽表例項SQLServer
- mysql分割槽功能、例項詳細介紹MySql
- 好程式設計師大資料開發之掌握Hive的靜態分割槽與動態分割槽程式設計師大資料Hive
- MapReduce實現之Reduce端重分割槽Join操作最佳化!
- 自定義右鍵導航選單程式碼例項
- CSS自定義滑鼠指標形狀程式碼例項CSS指標
- css自定義滑鼠指標圖示程式碼例項CSS指標
- Hadoop-MapReduce之自定義資料型別Hadoop資料型別
- 【例項】PowerQuery的自定義日曆
- django自定義過濾器例項Django過濾器
- [Hive]hive分割槽設定注意事項Hive
- css分割線程式碼例項CSS線程
- 防竄貨系統分割槽表指令碼例項指令碼
- js自定義回撥函式簡單程式碼例項JS函式
- node.js實現的自定義事件程式碼例項Node.js事件
- Jmeter beanshell程式設計例項JMeterBean程式設計
- 設計模式例項程式碼設計模式
- KafKa Java程式設計例項KafkaJava程式設計
- Java 經典例項:自定義迭代器Java
- Android 自定義 TabActivity 的例項方法Android