欢迎投稿

今日深度:

hadoop 之 文件读取操作,hadoop文件读取操作

hadoop 之 文件读取操作,hadoop文件读取操作


在进行MR的过程前,通常需要在setUp读入一些文件,MR中的文件操作与平时项目中FileInputStream是比较类似的,只不过需要使用FSDataInputStream。这里写一个读取一个目录下所有文件的Demo,方便以后回顾。

private static String universityPath = "hdfs://10.1.11.1000:8020/user/mysql/china_universities";

public List<String[]> getUniversityInfo(Mapper<Object, Text, Text, NullWritable>.Context context) throws Exception{
        List<String[]> universityInfo = new ArrayList<>();      
        Configuration configuration=context.getConfiguration();  
        FileSystem fileSystem=FileSystem.get(URI.create(universityPath), configuration);
        Path filePath =new Path(universityPath);   
        //将areaCode 目录下的所有文件进行读取
        FileStatus stats[] = fileSystem.listStatus(filePath);  
        //数据的读入操作
        for(int i = 0; i < stats.length; ++i){  
            if(stats[i].getPath().toString().indexOf("part")!=-1){//文件只需要读取part-r-00000这种格式的
                Path inFile =new Path(stats[i].getPath().toString());  
                FSDataInputStream in=null;  
                in=fileSystem.open(inFile);  
                InputStreamReader isr = new InputStreamReader(in,"utf-8");
                BufferedReader br = new BufferedReader(isr);
                String line;
                //数据处理后放到subjectMap中
                while((line = br.readLine()) != null){
                    String[] areaStrs = line.split("'");
                    universityInfo.add(areaStrs);
                }
            }
        }
        return universityInfo;
    }

www.htsjk.Com true http://www.htsjk.com/Hadoop/31857.html NewsArticle hadoop 之 文件读取操作,hadoop文件读取操作 在进行MR的过程前,通常需要在setUp读入一些文件,MR中的文件操作与平时项目中FileInputStream是比较类似的,只不过需要使用FSDataInputStream。这...
相关文章
    暂无相关文章
评论暂时关闭