当前位置: 首页 > news >正文

一般做外单的有哪些网站网站建设运营知识

一般做外单的有哪些网站,网站建设运营知识,深圳创业补贴申请后多久到账,苏州网站制作出名 乐云践新guava读取配置文件在本文中#xff0c;我们将为通过Context对象将配置参数传递给Hadoop Mapper提供新的思路。 通常#xff0c;我们在启动map-reduce作业时将配置参数设置为Context对象上的键/值对。 然后在Mapper中#xff0c;我们使用键来检索要用于我们的配置需求的值。 … guava读取配置文件 在本文中我们将为通过Context对象将配置参数传递给Hadoop Mapper提供新的思路。 通常我们在启动map-reduce作业时将配置参数设置为Context对象上的键/值对。 然后在Mapper中我们使用键来检索要用于我们的配置需求的值。 不同之处在于我们将在Context对象上设置一个特殊格式的字符串并在Mapper中检索值时使用Guava MapSplitter将格式化后的字符串转换为将用于获取配置参数的HashMap 。 我们可能会问自己为什么要去解决这个麻烦 通过这种方式进行配置我们可以在Context对象上设置单个键值对的情况下将多个参数传递给Mapper。 为了说明一种可能的用法我们将回顾上一篇文章 其中介绍了如何执行减少侧连接。 该职位提出的解决方案存在两个问题。 首先我们假设要加入的键始终是文件中带分隔符的字符串中的第一个值。 其次我们假设每个文件使用相同的定界符。 如果我们要从密钥位于每个文件中不同位置的文件中加入数据而某些文件使用不同的定界符怎么办 另外我们希望对输出的所有数据使用相同的定界符如果有而不考虑任何输入文件中使用的定界符。 尽管这是人为的情况但它将很好地用于演示目的。 首先让我们研究一下MapSplitter类是什么以及如何使用它。 MapSplitter MapSplitter是Splitter类中的一个嵌套类。 Spitter接受一个字符串并使用给定的定界符将其拆分为多个部分。 MapSplitter通过从字符串创建Map StringString进一步走了一步该字符串的键值对用一个定界符分隔而对值本身则完全用另一个定界符分隔。 让我们看一个例子 MapString,String configParams Splitter.splitOn(#).withKeyValueSeparator().split(6June#7July#8August); 在上面的示例中字符串6June#7July#8August将被转换为Map键6,7和8分别映射到JuneJuly和August。 MapSplitter是一个非常简单但功能强大的类。 现在我们知道了MapSplitter工作原理让我们看一下如何使用它来帮助我们为map-reduce作业设置配置参数 使用MapSplitter进行配置 以前我们通过在Context对象中为map-reduce作业设置值来将连接键的索引位置和分隔符设置为对所有文件相同。 现在我们希望能够根据需要在每个输入文件的基础上进行设置。 我们仍将根据需要提供默认值。 为了完成此更改我们将创建一个属性文件该属性文件将文件名作为键并且该值将是格式设置为MapSplitter使用的MapSplitter 。 我们的属性文件如下所示 oneToManyEmployer2.txtkeyIndex1separator| oneToManyVehicles2.txtkeyIndex1separator# 在这里我们指示文件oneToManyEmployer2.txt在索引位置1处具有我们的连接键而分隔符为“ |” 竖线字符和oneToManyVehicles2.txt文件在索引位置1处具有连接键并使用“”逗号作为分隔符。 我们将对驱动程序类进行一些更改。 首先我们将加载属性文件假设我们已将文件放置在相对于调用hadoop的目录中。 InputStream inputStream new FileInputStream(new File(./jobs/join-config.properties)); Properties properties new Properties(); properties.load(inputStream); 首先我们定义一个常规的Splitter对象该对象将在斜杠“ /”上拆分文件名。 接下来当我们遍历文件名时通过对从Splitter.split方法调用返回的Iterable对象调用Iterables.getLast来获得文件的基本名称。 然后我们尝试在Properties.getProperty方法中为每个文件检索配置的属性字符串。 请注意如果找不到文件的属性我们还将传递defaultMapConfig变量该变量提供默认值。 我们还添加了一些其他配置键和值。 将值连接在一起时使用的定界符以及文件的连接顺序该顺序由文件在提供给程序的参数中的位置确定。 然后我们仅使用文件名作为键将格式化后的字符串放入Context对象。 String defaultMapConfig keyIndex0separator,; Splitter splitter Splitter.on(/); for (int i 0; i args.length - 1; i) {String fileName Iterables.getLast(splitter.split(args[i]));String mapConfig properties.getProperty(fileName, defaultMapConfig);builder.append(mapConfig).append(joinDelimiter,joinOrder).append(i 1);config.set(fileName, builder.toString());builder.setLength(0);filePaths.append(args[i]).append(,); }使用配置值 要使用我们的配置值我们首先必须检索存储为包含我们的配置参数的字符串的HashMap private Splitter.MapSplitter mapSplitter Splitter.on().withKeyValueSeparator(); ....... private MapString,String getConfigurationMap(Context context){FileSplit fileSplit (FileSplit)context.getInputSplit();String configString context.getConfiguration().get(fileSplit.getPath().getName());return mapSplitter.split(configString);} 在这里我们使用MapSplitter实例变量并通过使用此Mapper使用的文件名检索存储在Context的格式化字符串来创建HashMap 。 现在我们可以简单地从映射中拉出所需的配置参数如setup方法中所示 protected void setup(Context context) throws IOException, InterruptedException {MapString,String configMap getConfigurationMap(context);keyIndex Integer.parseInt(configMap.get(keyIndex));String separator configMap.get(separator);splitter Splitter.on(separator).trimResults();String joinDelimiter configMap.get(joinDelimiter);joiner Joiner.on(joinDelimiter);joinOrder Integer.parseInt(configMap.get(joinOrder));} map方法中的代码与我们先前的文章中的代码相同。现在我们每个文件都具有完全可配置的设置而且我们不限于将join键放在一个位置也不必每个文件使用相同的定界符。 当然这只是一个示例但是此处概述的方法可用于配置许多其他设置并且只需要Context对象中的一个键即可。 结果 最初我们的数据如下所示 oneToManyEmployer2.txt Creative Wealth|cdd8dde3-0349-4f0d-b97a-7ae84b687f9c Susies Casuals|81a43486-07e1-4b92-b92b-03d0caa87b5f Super Saver Foods|aef52cf1-f565-4124-bf18-47acdac47a0e ..... oneToManyVehicles2.txt 2003 Holden Cruze#cdd8dde3-0349-4f0d-b97a-7ae84b687f9c 2012 Volkswagen T5#81a43486-07e1-4b92-b92b-03d0caa87b5f 2009 Renault Trafic#aef52cf1-f565-4124-bf18-47acdac47a0e ..... singlePersonRecords.txt cdd8dde3-0349-4f0d-b97a-7ae84b687f9c,Esther,Garner,4071 Haven Lane,Okemos,MI 81a43486-07e1-4b92-b92b-03d0caa87b5f,Timothy,Duncan,753 Stadium Drive,Taunton,MA aef52cf1-f565-4124-bf18-47acdac47a0e,Brett,Ramsey,4985 Shinn Street,New York,NY ...... 运行我们的map-reduce作业后结果看起来就像我们想要的一样 08db7c55-22ae-4199-8826-c67a5689f838,John,Gregory,258 Khale Street,Florence,SC,2010 Nissan Titan,Ellmans Catalog Showrooms 0c521380-f868-438c-9916-4ab4ea76d316,Robert,Eversole,518 Stratford Court,Fayetteville,NC,2002 Toyota Highlander,Specialty Restaurant Group 1303e8a6-0085-45b1-8ea5-26c809635da1,Joe,Nagy,3438 Woodstock Drive,El Monte,CA,2011 Hyundai ix35,Eagle Food Centers 15360125-38d6-4f1e-a584-6ab9d1985ab8,Sherri,Hanks,4082 Old House Drive,Alexandria,OH,2003 Toyota Solara,Odyssey Records Tapes ......资源资源 Jimmy Lin和Chris Dyer 使用MapReduce进行的数据密集型处理 Hadoop Tom White 的权威指南 来自博客的源代码和测试 编程蜂巢爱德华卡普里奥罗院长Wampler和Jason拉瑟格伦 通过Alan Gates 编程Pig Hadoop API MRUnit用于单元测试Apache Hadoop映射减少工作 参考 《 随机编码》博客上的JCG合作伙伴 Bill Bejeck提供的使用Guava MapSplitters配置Hadoop 。 翻译自: https://www.javacodegeeks.com/2013/09/configuring-hadoop-with-guava-mapsplitters.htmlguava读取配置文件
http://www.yutouwan.com/news/91263/

相关文章:

  • 网站开发找公司好还是个人阳谷聊城做网站
  • 可以建网站的公司cms影视建站系统
  • 免费的奖励网站有哪些铜山徐州网站开发
  • 便利的微网站建设vi视觉识别系统设计
  • 如何用一个域名做多个网站wordpress整合问答系统
  • 网站建设工作标准南京网站设计哪家公司好
  • 设计网站页面要多少钱网站为什么被百度k了
  • 表格做的网站影响收录天津哪家做企业网站
  • 做流程图用什么网站最近几年做电影网站怎么样
  • 云南专业做网站多少钱做网站的时候字体应该多大
  • 静态网站添加到织梦项目计划书的六大要素
  • 网站建设公司 优势代做网站推广的公司
  • 阿里巴巴网站建设教程视频长春网站推广优化
  • 东莞服饰网站建设哪家好上海网站优化推广
  • 网站首页被k 不恢复建设银行网站怎么查工资明细
  • 做网站最下面写什么做网站感觉挣不到钱啊
  • 深圳房产网站建设国外手机网站模板
  • dede网站首页加悬浮广告路桥区商用营销型网站建设
  • 一般网站建设好多久被收录vi设计模板源文件
  • 天津网站设计怎样自学开网店
  • 建设广告联盟网站让百度收入 wordpress
  • 帮中介做网站赚钱吗衡阳网站制作公司
  • 网站开发公司需要什么资质简单网页制作工具
  • 泾川网站建设电子商务网站建设包括哪些内容
  • 注册了网站之后怎么设计免费网站源码
  • 赢展网站建设访问不到自己做的网站
  • 水利局网站建设整改报告免费网站备案
  • 网站建设兼职招聘wordpress权限说明
  • 深圳网站建设ln12345昆山网站建设义搏
  • php网站安装好后后台无法登陆提示是500是怎么回事?教育app定制开发