加载时的子目录名称条件

ncecgwcz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(308)

我在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或当天晚些时候。
有我可以使用的regexp吗?
我需要帮助。
谢谢,
尤利娅。

s6fujrry

s6fujrry1#

不完全是你想要的,但可能会有所帮助。pigstorage支持以下参数:

-tagFile
-tagPath

https://pig.apache.org/docs/r0.12.0/api/org/apache/pig/builtin/pigstorage.html
它们将在关系的文件名和路径名前加上前缀。然后您可以很容易地筛选出来自您不感兴趣的目录的行。

v1uwarro

v1uwarro2#

除了ran所建议的之外,如果您正在寻找自定义行为,您可以使用自定义加载/存储udf来实现您的逻辑。您可以将自定义输入参数(年、月、日期、小时)传递给加载器,以获取所需的所有输入路径。
请参阅此以了解更多详细信息。

相关问题