日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MapReduce将小文件合并成大文件,并设置每个切片的大小的案例

發布時間:2024/9/27 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MapReduce将小文件合并成大文件,并设置每个切片的大小的案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試代碼:

package cn.toto.bigdata.combinefile;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.NullWritable; 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.CombineTextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/*** 當遇到小文件處理時,每個文件會被當成一個split,那么資源消耗非常大,hadoop支持將小文件合并后當成一個切片處理。(默認)*/ public class SmallFileCombiner {static class SmallFileCombinerMapper extends Mapper<LongWritable, Text, Text, NullWritable>{NullWritable v = NullWritable.get();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//通過這種方式相當于是直接把值打印到磁盤文件中。value其實就是每一樣的的文件內容context.write(value, v);}}/*** 如果生產環境中,小文件的數量太多,那么累計起來的數量也是很龐大的,那么這時候就要設置切片的大小了。* * 即使用:CombineTextInputFormat.setMaxInputSplitSize(job, 1024*1024*150);*/public static void main(String[] args) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(SmallFileCombiner.class);job.setMapperClass(SmallFileCombinerMapper.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(NullWritable.class);//下面的方式將小文件劃分為一個切片。job.setInputFormatClass(CombineTextInputFormat.class);//如果小文件的總和為224M,將setMaxInputSplitSize中的第二個參數設置成300M的時候,在//E:\wordcount\output下只會生成一個part-m-00000這種文件//如果將setMaxInputSplitSize中的第二個參數設置成150M的時候,在//E:\wordcount\output下會生成part-m-00000 和 part-m-00001 兩個文件CombineTextInputFormat.setMaxInputSplitSize(job, 1024*1024*150);CombineTextInputFormat.setInputPaths(job, new Path("e:/wordcount/input/"));FileOutputFormat.setOutputPath(job, new Path("e:/wordcount/output/"));job.setNumReduceTasks(0);job.waitForCompletion(true);} }
準備數據:

在E:\wordcount\input目錄下準備小文件(總大小為224M),如:


其中文件內容類似:


執行完成程序之后,進入E:\wordcount\output查看內容:



其中part-m-00000的內容如下:







總結

以上是生活随笔為你收集整理的MapReduce将小文件合并成大文件,并设置每个切片的大小的案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。