整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

7.2.1.2. FilelnputFormat类的输入路径

hadoop 花牛 10℃ 0评论

作业的输入被设定为一组路径,这对指定作业输入提供了很强的灵活性。 FilelnputFormat提供四种静态方法来设定Job的输入路径:

public static void addInputPath(Job job, Path path)
public static void addInputPaths(Dob job, String commaSeparatedPaths)
public static void setInputPaths(Job job, Path... inputPaths)
public static void setInputPaths(Dob job, String commaSeparatedPaths)

其中,addInputPath()和addInputPaths()方法可以将一个或多个路径加入路径列表。可以分别调用这两种方法来建立路径列表。setInputPaths()方法一次设定完整的路径列表(替换前面调用中在Job上所设置的所有路径)

一条路径可以表示一个文件、一个目录或是一个glob,即一个文件和目录的集合。路径是目录的话,表示要包含这个目录下所有的文件,这些文件都作为作业的输入。关于glob的使用,3.5.5节在讲到“文件模式”时有详 细讨论。

—个被指定为输入路径的目录,其内容不会被递归处理。事实上,这些目录只包含文件:如果包含子目录,也会被解释为文件(从而产生错误)。处理这个问题的方法是:使用一个文件glob或一个过滤器根据命名模式(name pattern)限定选择目录中的文件。另一种方法是,将 mapred.input.dir.recursive 设置为true从而强制对输入目录进行递归地读取。

add方法和set方法允许指定包含的文件。如果需要排除特定文件,可以使用FilelnputFormatsetlnputPathFilter()方法设置一个过滤器:

public static void setInputPathFilter(Job job, Class<? extends PathFilter> filter)

过滤器的详细讨论参见3.5.5节中的“PathFilter”小节说细讨论了过滤器。

即使不设置过滤器,FilelnputFormat也会使用一个默认的过滤器来排除隐藏文件(名称中以.”和“_”开头的文件)。如果通过调用setlnputPathFilter()设置了过滤器,它会在默认过滤器的基础上进行过滤。换句话说,自定义的过滤器只能看到非隐藏文件。

路径和过滤器也可以通过配置属性来设置(参见表7-4),这对StreamingPipes应用很方便。StreamingPipes接口都使用-input选项来设置路径,所以通常不需要直接进行手动设置。

表7-4.输入路径和过滤器属性

属性名称

类型

默认值

描述

mapred.input.dir

逗号分隔的路径

作业的输入文件。包含逗号的路径中的逗号由\”符号转义。例如:glob {a,b}变成了{a\, b}

mapred.input.pathFilter.class

PathFilter 类名

应用于作业输人文件的过滤器

转载请注明:全栈大数据 » 7.2.1.2. FilelnputFormat类的输入路径

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址