大数据技术 mapreduce同时加载读取多个文件
沉沙 2018-10-12 来源 : 阅读 2696 评论 0

摘要:本篇教程探讨了大数据技术 mapreduce同时加载读取多个文件,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 mapreduce同时加载读取多个文件,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<

方法一:

 

  a.第一步:在job中加载两个文件所在的位置

 

         FileInputFormat.setInputPaths(job, new Path[] { new Path("hdfs://192.168.9.13:8020/gradeMarking"),
      new Path("hdfs://192.168.9.13:8020/implyCount") });

 

  b.第二步:在Mapper类中重写setup方法,使用context对象获取该文件所在的文件名(如果是经过处理后的数据文件,因为文件名一样part-r-00000,所以要获取其所在的文件夹名)
        @Override
    protected void setup(Mapper.Context context) throws IOException, InterruptedException {
    FileSplit fs = (FileSplit) context.getInputSplit();
    parentName = fs.getPath().getParent().getName();
    }

方法二:

  a.第一步:在job中将文件加载到本地

    job.addCacheFile(new URI("hdfs://192.168.9.13:8020/meanwhileFind(同现)_data/part-r-00000"));
  b.第二步:在Mapper函数中重写setup函数,用字符缓冲流进行读取
   
复制代码

 1 @Override
 2         protected void setup(Mapper.Context context)
 3                 throws IOException, InterruptedException {
 4             @SuppressWarnings("resource")
 5             BufferedReader br = new BufferedReader(new FileReader("part-r-00000"));
 6             String str = null;
 7             while ((str = br.readLine()) != null) {
 8                 String[] datas = str.split("\t");
 9                 String[] sp = datas[0].split("-");
10                 if (!map.containsKey(sp[0])) {
11                     HashMap mapInner = new HashMap<>();
12                     mapInner.put(sp[1], Double.parseDouble(datas[1]));
13                     map.put(sp[0], mapInner);
14                 } else {
15                     @SuppressWarnings("rawtypes")
16                     HashMap mapInner = map.get(sp[0]);
17                     mapInner.put(sp[1], Double.parseDouble(datas[1]));
18                 }
19             }
20         }    

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程