当前位置:首页 > 站长资讯 > 正文内容

Hadoop DistributedCache分布式缓存的使用

a8116255311年前 (2014-10-29)站长资讯44

做项目的时候遇到一个问题,在Mapper和Reducer *** 中处理目标数据时,先要去检索和匹配一个已存在的标签库,再对所处理的字段打标签。因为标签库不是很大,没必要用HBase。我的实现 *** 是把标签库存储成HDFS上的文件,用分布式缓存存储,这样让每个slave都能读取到这个文件。

main *** 中的配置:

//分布式缓存要存储的文件路径
string cachePath[] = {
                "hdfs://10.105.32.57:8020/user/ad-data/tag/tag-set.csv",
                "hdfs://10.105.32.57:8020/user/ad-data/tag/TagedUrl.csv"
        };
//向分布式缓存中添加文件
        job.addCacheFile(new Path(cachePath[0]).toUri());
        job.addCacheFile(new Path(cachePath[1]).toUri());

参考上面代码即可向分布式缓存中添加文件。

在Mapper和Reducer *** 中读取分布式缓存文件:

/*
 * 重写Mapper的setup *** ,获取分布式缓存中的文件
 */
    @Override
    protected void setup(Mapper<LongWritable, Text, Text, Text>.Context context)
                   throws IOException, InterruptedException {
        // TODO Auto-generated method stub
        super.setup(context);
        URI[] cacheFile = context.getCacheFiles();
        Path tagSetPath = new Path(cacheFile[0]);
        Path tagedUrlPath = new Path(cacheFile[1]);
        文件操作(如把内容读到set或map中);
    }

@Override
public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
            在map()中使用读取出的数据;
      }

同样,假如在Reducer中也要读取分布式缓存文件,示例如下:

/*
 * 重写Reducer的setup *** ,获取分布式缓存中的文件
 */
    @Override
    protected void setup(Context context) 
                   throws IOException, InterruptedException {
        super.setup(context);
        mos = new MultipleOutputs<Text, Text>(context);

        URI[] cacheFile = context.getCacheFiles();
        Path tagSetPath = new Path(cacheFile[0]);
        Path tagSetPath = new Path(cacheFile[1]);
        文件读取操作;
    }

 @Override
  public void reduce(Text key, Iterable<Text> values, Context context)
              throws IOException, InterruptedException {
      while(values.iterator().hasNext()){
          使用读取出的数据;
      }
       context.write(key, new Text( *** .toString()));
      }

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/44.html

分享给朋友:

“Hadoop DistributedCache分布式缓存的使用” 的相关文章

高强度竞争领域注定容不下安逸,等待敲锣的协和电子正走在掉队的路上?

高强度竞争领域注定容不下安逸,等待敲锣的协和电子正走在掉队的路上?

  扎根印制电路板技术研发二十年,专注于汽车电子、高频通讯等中高端领域的协和电子(605258)本周启动招股,下周四(11月19日)即将网上申购。   多年的沉淀,令其收获了一批优质客户。不过随着行业规模增长放缓、各类成本抬升以及行业龙头集中度提高,协和电子往日优势逐渐消退,利润水平也逐年降低,此...

威腾电气IPO观察:自夸“头部企业”被打回原形 拿投资者4个亿只为“试试水”?

威腾电气IPO观察:自夸“头部企业”被打回原形 拿投资者4个亿只为“试试水”?

  威腾电气,一家缺乏科创属性、爱夸夸其谈还带着问题供应商的公司,正在冲击科创板市场。   2021年1月14日,以输配电中母线产品研发、制造及销售为主业的威腾电气,正式通过上市委会议,距离科创板上市又近了一步。   但这对投资者而言,可能并不是一件好事。   由于身在传统电力行业,科研步伐又...

市占率不足0.1% 造血能力不足 罗普特科创上市谋续命?

市占率不足0.1% 造血能力不足 罗普特科创上市谋续命?

  钱流不进口袋的企业,真的算是赚钱企业吗?   盈利,是大部分投资者最关心的问题。但企业盈利的有效性,是有前提的,现金流就是这个前提。但这部分,往往会被许多投资者忽略,正如巴菲特的那句著名评论:“现金是氧气,99%的时间你不会注意它,直到它没有了”。   没有现金流入的盈利只是纸面数字,纸面数...

19%市占率换不来业绩体量的和林微纳 新业务0.24%市占率又该如何期待?

19%市占率换不来业绩体量的和林微纳 新业务0.24%市占率又该如何期待?

  以19%市占率位居精微屏蔽罩市场头部玩家的和林微纳,即将亮相科创板。   2021年3月9日,主要产品为微机电(MEMS)精微电子零部件的和林微纳,开启了科创板招股。公司与楼氏电子、瑞声科技、裕元电子和银河机械,一同成为精微屏蔽罩市场的主要玩家,2019年五家企业合计占到全球市场总份额的80%...

新风光:核心材料严重依赖进口 毛利率下滑市场“风光”不再 |

新风光:核心材料严重依赖进口 毛利率下滑市场“风光”不再 |

  作为“光伏、风电”等大热门行业上游关键零部件供应商的新风光,即将登陆科创资本市场。   2021年3月24日,以大功率电力电子节能控制技术为核心技术平台,构筑电气控制装备产品体系的新风光,在科创板开启招股环节。   招股资料显示,新风光本次共计将募资5.9亿元,其中1.5亿元用于变频器和SV...

瑞华泰:主业停滞、产能重研发轻、债务高筑、实控人空悬… 压力重重 何去何从?丨

瑞华泰:主业停滞、产能重研发轻、债务高筑、实控人空悬… 压力重重 何去何从?丨

  瑞华泰,一家打破“卡脖子”材料高端PI薄膜的企业,日前正在做科创资本市场的最后冲刺。   2021年4月14日,专注于高性能PI薄膜领域技术自主研发的制造商瑞华泰,已经开启路演及询价环节,距离正式科创板资本市场仅剩最后一步之遥。目前,公司已建立了完整的PI薄膜研发和产业化的核心技术体系,成功进...