网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

MapReduce中文件名通配与过滤的示例分析

这篇文章主要为大家展示了“MapReduce中文件名通配与过滤的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MapReduce中文件名通配与过滤的示例分析”这篇文章吧。

创新互联建站主营任县网站建设的网络公司,主营网站建设方案,成都app软件开发,任县h5微信小程序开发搭建,任县网站营销推广欢迎任县等地区企业咨询

1、通配符的使用与简介

在一步操作中处理批量文件,这个要求很常见。举例来说,处理日志的MapReduce作业可能会分析一个月的文件,这些文件被包含在大量目录中。Hadoop有一个通配的操作,可以方便地使用通配符在一个表达式中核对多个文件,不需要列举每个文件和目录来指定输入。Hadoop为执行通配提供了两个FileSystem方法:

public FileStatus[] globStatus(Path pathPattern) throws IOException  

public FileStatus[] globStatus(Path pathPattern, PathFilter filter) throws IOException

globStatus()返回了其路径匹配于所供格式的FileStatus对象数组,按路径排序。可选的PathFilter命令可以进一步指定限制匹配。
Hadoop支持的一系列通配符与Unix bash相同(见表3-2)。
表3-2:通配符及其作用

通配符

名称

匹配

*

星号

匹配0或多个字符

问号

匹配单一字符

[ab]

字符类别

匹配{a,b}中的一个字符


续表

通配符

名称

匹配

[^ab]

非字符类别

匹配不是{a,b}中的一个字符

[a-b]

字符范围

匹配一个在{a,b}范围内的

字符(包括ab),a在字典

顺序上要小于或等于b

[^a-b]

非字符范围

匹配一个不在{a,b}范围内

的字符(包括ab),a在字

典顺序上要小于或等于b

{a,b}

或选择

匹配包含a或b中的一个的语句

\c

转义字符

匹配元字符c


     

假设有日志文件存储在按日期分层组织的目录结构中。如此一来,便可以假设2007年最后一天的日志文件就会以/2007/12/31的命名存入目录。假设整个文件列表如下:

/2007/12/30  
/2007/12/31  
/2008/01/01  
/2008/01/02

以下是一些文件通配符及其扩展。

通配符

扩展

/*

/2007/2008

/*/*

/2007/12 /2008/01

/*/12/*

/2007/12/30 /2007/12/31

/200?

/2007 /2008

/200[78]

/2007 /2008

/200[7-8]

/2007 /2008

/200[^01234569]

/2007 /2008

/*/*/{31,01}

/2007/12/31 /2008/01/01

/*/*/3{0,1}

/2007/12/30 /2007/12/31

/*/{12/31,01/01}

/2007/12/31 /2008/01/01


     

2、PathFilter对象

通配格式不是总能够精确地描述我们想要访问的文件集合。比如,使用通配格式排除一个特定的文件就不太可能。FileSystem中的listStatus()和globStatus()方法提供了可选的PathFilter对象,使我们能够通过编程方式控制匹配:

package org.apache.hadoop.fs;  
 
public interface PathFilter {  
   boolean accept(Path path); 
}

PathFilter与java.io.FileFilter一样,是Path对象而不是File对象。

例3-7:展示了一个PathFilter,用于排除匹配一个正则表达式的路径。

public class RegexExcludePathFilter implements PathFilter {  
    
  private final String regex;  
 
  public RegexExcludePathFilter(String regex) {  
    this.regex = regex;  
  }  
 
  public boolean accept(Path path) {  
    return !path.toString().matches(regex);  
  }  
}

这个过滤器只留下与正则表达式不同的文件。我们将它与预先剔除一些文件集合的通配配合:过滤器用来优化结果。例如:

fs.globStatus( new Path("/2007/*/*"),   
               new RegexExcludeFilter("^.*/2007/12/31$")
)

以上是“MapReduce中文件名通配与过滤的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站题目:MapReduce中文件名通配与过滤的示例分析
网站路径:http://bjjierui.cn/article/jdjsps.html

其他资讯