加载时的子目录名称条件

Subdirectory name condition when loading

我在 HDFS 上的文件结构如下所示:

/dir/$YEAR/$MONTH/$DAY/$HOUR

例如

/dir/2016/03/03/05/file00.txt

保留 2016 年 3 月 3 日的所有文件05:00

当我 运行 我的 PIG 脚本时,我想加载某一天 某个小时之前的所有文件。

例如,当我运行

pig -p YEAR=2016 -p MONTH=03 -p DAY=03 -p HOUR=05 pig_script.pig

我希望脚本加载以下位置的所有文件:

/dir/2016/03/03/00/
/dir/2016/03/03/01/ 
/dir/2016/03/03/02/
/dir/2016/03/03/03/
/dir/2016/03/03/04/

但不包括 05:00 或当天的任何晚些时候。

有没有我可以使用的正则表达式?

希望得到一些帮助。

谢谢,
尤莉亚.

不完全是您要找的东西,但可能会有帮助。 PigStorage 支持参数:

-tagFile
-tagPath 

https://pig.apache.org/docs/r0.12.0/api/org/apache/pig/builtin/PigStorage.html

那些会将文件和路径名添加到您的关系中。然后您可以轻松过滤掉您不感兴趣的目录中的行。

除了 运行 建议的内容,如果您正在寻找自定义行为,您可以使用自定义 Load/Store UDF 来实现您的逻辑。您可以将自定义输入参数(年、月、日、小时)传递给加载程序,以获取您想要的所有输入路径。

有关详细信息,请参阅 this