从 Pig 脚本中的目录加载选定的文件

Posted

技术标签:

【中文标题】从 Pig 脚本中的目录加载选定的文件【英文标题】:Loading selected files from a directory in Pig script 【发布时间】:2016-02-04 10:21:03 【问题描述】:

我想知道如何从 Pig Script 的目录中加载一些文件。

假设一个目录中有4个1月份的文件,这4个文件名如下

 2016-01-01.txt
 2016-01-02.txt
 2016-01-03.txt
 2016-01-04.txt

现在我的要求是读取 2016-01-01 到 2016-01-03 的文件,这意味着获取 2016 年 1 月的前 3 个文件 ..

我的猪脚本:

下面这行有效:

rec = LOAD '/home/dir/2016-01-01*,2016-01-02*,2016-01-03*' USING PigStorage(',');

下面这行不起作用:

rec = LOAD '/home/dir/2016-01-01*-03*' USING PigStorage(',');

我收到以下错误。我在 MAPR 集群中使用 Pig 0.14

N/A     file_records    MAP_ONLY        Message:     org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Input Pattern maprfs:///home/dir/2016-01-01*-03* matches 0 files. Paths with components .*, _* were skipped. 
0 additional path filters were applied

有人能解释一下发生了什么吗?我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

可能重复Load mutilple files over a date range in PIG

rec = LOAD '/home/dir/2016-01-01,2,3*' USING PigStorage(',');

rec = LOAD '/home/dir/2016-01-01,02,03*' USING PigStorage(',');

rec = LOAD '/home/dir/2016-01-0[1-3]*' USING PigStorage(',');

【讨论】:

您的建议有效。非常感谢!

以上是关于从 Pig 脚本中的目录加载选定的文件的主要内容,如果未能解决你的问题,请参考以下文章

从 pig 脚本运行时,PIG 未从 hdfs 读取文件

PIG 加载 CSV - 地图类型错误

如何使用 apache pig 在 hadoop 集群上加载文件?

如何在另一个猪脚本中调用猪脚本

在 Hortonworks Sandbox 内的 Pig 脚本中加载 JSON 文件

通过 pig 脚本删除 hive 表分区