hadoop 之 文件读取操作

来源:互联网 发布:学习软件营销方案 编辑:程序博客网 时间:2024/06/03 13:43

在进行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;    }
原创粉丝点击