国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Hadoop MultipleOutputs輸出到多個文件中的實現(xiàn)方法

Hadoop MultipleOutputs輸出到多個文件中的實現(xiàn)方法

2021-01-25 11:25csguo007 Java教程

這篇文章主要介紹了 Hadoop MultipleOutputs輸出到多個文件中的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

 Hadoop MultipleOutputs輸出到多個文件中的實現(xiàn)方法

1.輸出到多個文件或多個文件夾:

驅(qū)動中不需要額外改變,只需要在MapClass或Reduce類中加入如下代碼

?
1
2
3
4
5
6
7
private MultipleOutputs<Text,IntWritable> mos;
public void setup(Context context) throws IOException,InterruptedException {
  mos = new MultipleOutputs(context);
}
public void cleanup(Context context) throws IOException,InterruptedException {
  mos.close();
}

  然后就可以用mos.write(Key key,Value value,String baseOutputPath)代替context.write(key, value);

  在MapClass或Reduce中使用,輸出時也會有默認(rèn)的文件part-m-00*或part-r-00*,不過這些文件是無內(nèi)容的,大小為0. 而且只有part-m-00*會傳給Reduce。

注意:multipleOutputs.write(key, value, baseOutputPath)方法的第三個函數(shù)表明了該輸出所在的目錄(相對于用戶指定的輸出目錄)。

如果baseOutputPath不包含文件分隔符“/”,那么輸出的文件格式為baseOutputPath-r-nnnnn(name-r-nnnnn);
如果包含文件分隔符“/”,例如baseOutputPath=“029070-99999/1901/part”,那么輸出文件則為029070-99999/1901/part-r-nnnnn

2.案例-需求

需求,下面是有些測試數(shù)據(jù),要對這些數(shù)據(jù)按類目輸出到output中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1512,iphone5s,4英寸,指紋識別,A7處理器,64位,M7協(xié)處理器,低功耗
 
1512,iphone5,4英寸,A6處理器,IOS7
 
1512,iphone4s,3.5英寸,A5處理器,雙核,經(jīng)典
 
50019780,ipad,9.7英寸,retina屏幕,豐富的應(yīng)用
 
50019780,yoga,聯(lián)想,待機18小時,外形獨特
 
50019780,nexus 7,華碩&google,7英寸
 
50019780,ipad mini 2,retina顯示屏,蘋果,7.9英寸
 
1101,macbook air,蘋果超薄,OS X mavericks
 
1101,macbook pro,蘋果,OS X lion
 
1101,thinkpad yoga,聯(lián)想,windows 8,超級本

3.Mapper程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package cn.edu.bjut.multioutput;
 
import java.io.IOException;
 
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
 
public class MultiOutPutMapper extends Mapper<LongWritable, Text, IntWritable, Text> {
 
  @Override
  protected void map(LongWritable key, Text value, Context context)
      throws IOException, InterruptedException {
    String line = value.toString().trim();
    if(null != line && 0 != line.length()) {
      String[] arr = line.split(",");
      context.write(new IntWritable(Integer.parseInt(arr[0])), value);
    }
  }
 
}

4.Reducer程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package cn.edu.bjut.multioutput;
 
import java.io.IOException;
 
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;
 
public class MultiOutPutReducer extends
    Reducer<IntWritable, Text, NullWritable, Text> {
 
  private MultipleOutputs<NullWritable, Text> multipleOutputs = null;
 
  @Override
  protected void reduce(IntWritable key, Iterable<Text> values, Context context)
      throws IOException, InterruptedException {
    for(Text text : values) {
      multipleOutputs.write("KeySpilt", NullWritable.get(), text, key.toString()+"/");
      multipleOutputs.write("AllPart", NullWritable.get(), text);
    }
  }
 
  @Override
  protected void setup(Context context)
      throws IOException, InterruptedException {
    multipleOutputs = new MultipleOutputs<NullWritable, Text>(context);
  }
 
  @Override
  protected void cleanup(Context context)
      throws IOException, InterruptedException {
    if(null != multipleOutputs) {
      multipleOutputs.close();
      multipleOutputs = null;
    }
  }
 
 
}

5.主程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package cn.edu.bjut.multioutput;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
 
public class MainJob {
  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = new Job(conf, "aaa");
    job.setJarByClass(MainJob.class);
 
    job.setMapperClass(MultiOutPutMapper.class);
    job.setMapOutputKeyClass(IntWritable.class);
    job.setMapOutputValueClass(Text.class);
 
    job.setReducerClass(MultiOutPutReducer.class);
    job.setOutputKeyClass(NullWritable.class);
    job.setOutputValueClass(Text.class);
 
    FileInputFormat.addInputPath(job, new Path(args[0]));
 
    MultipleOutputs.addNamedOutput(job, "KeySpilt", TextOutputFormat.class, NullWritable.class, Text.class);
    MultipleOutputs.addNamedOutput(job, "AllPart", TextOutputFormat.class, NullWritable.class, Text.class);
 
    Path outPath = new Path(args[1]);
    FileSystem fs = FileSystem.get(conf);
    if(fs.exists(outPath)) {
      fs.delete(outPath, true);
    }
    FileOutputFormat.setOutputPath(job, outPath);
 
    job.waitForCompletion(true);
  }
}

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/zhyooo123/article/details/77866458

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: jizzjizzjizz亚洲女 | 人人做人人澡人人爽欧美 | 国产伦精品一区二区三区四区视频 | 国产精品久久久久久久久久久新郎 | 久久久久久久久国产精品 | 免费一级特黄做受大片 | 免费在线观看毛片 | 91精选| 一本色道精品久久一区二区三区 | 在线免费观看av电影 | 黄色av免费在线播放 | 国产精品初高中精品久久 | 日韩在线成人 | 亚洲日本韩国在线观看 | 中文字幕日韩欧美一区二区三区 | 久久国产成人 | 色视频在线免费观看 | 五月婷婷导航 | 亚洲日韩中文字幕一区 | 精品伊人 | 日韩国产一区二区 | 亚洲一区电影 | 国产精品免费一区二区三区 | 在线观看的av | 久久久久久久久久久久网站 | av在线免费观看一区二区 | 午夜男人天堂 | 欧美日韩精品一区二区三区四区 | 成人av免费| 国产精品视频久久 | 黄色一级视频在线观看 | 日韩一区二区三区在线观看 | 国产综合精品 | 亚洲精品九九 | 国产黄色播放 | 色婷婷综合久久久中文字幕 | 免费看一区二区三区 | 超碰人人操 | 黄色网毛片 | 国产在线成人 | 一级黄色片在线 |