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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值