首页 > 其他 > 详细

HDFS 实际应用场景合并小文件

时间:2017-07-30 13:16:56      阅读:282      评论:0      收藏:0      [点我收藏+]

合并小文件,存放到HDFS上, 采取在向HDFS复制上传的过程中将小文件进行合并,效果会更好

package org.xueruan.hadoop.hdfs;

import java.nio.file.Path;

import sun.management.FileSystem;

/*
 * function: merge file while copying and uploading files into HDFS
 */

public class PutMerge {
    
    public static void put(String localDir,String hdfsFile){
        
        /*
         * @param localDir: local file directory
         * 
         * @param hdfsFile:    HDFS file path
         */
        Configuration conf = new Configuration();
        
        Path localPath = new Path(localDir);
        Path hdfsPath = new Path(hdfsFile);
        
        try{
            
            FileSystem localFs = FileSystem.getLocal(conf);
            FileSystem hdfs = FileSystem.get(conf);
            
            FileStatus[] status = localFs.listStatus(localPath);
            
            FSDataOutputStream fsDataOutputStream = hdfs.create(hdfsPath);
            
            for(FileStatus fileStatus:status){
                
                Path path = fileStatus.getPath();
                System.out.println("File is :"+path.getName());
                
                //open file input stream
                FSDdataInputStream fsDataInputStream = localFs.open(path);
                
                byte[] buffer= new byte[1024];
                int len =0;
                while(len = fsDataInputStream.read(buffer)>0){
                    
                    fsDataOutputStream.write(buffer,0,len);
                    
                }
                fsDataInputStrea.close();
            }
            
            fsDataOutputStream.close();
        }catch(Exception e){
            e.printStackTrace();
            
        }
        
        
    }

}

 

技术分享

 

HDFS 实际应用场景合并小文件

原文:http://www.cnblogs.com/andypengyong/p/7258840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!