我的加载功能应该是敏感的文件的年龄,我只感兴趣的文件创建在过去1周和文件夹中有30天的文件。我对pig还比较陌生,见过一些定制的loader,但是还没有找到一个限制文件加载的选项。任何帮助都将不胜感激谢谢
brjng4g31#
不要试图在Pig的体内这样做。在bash脚本中使用参数替换。如果以本地模式在清管器中运行,则可以使用 find 获取文件的命令:
find
# !/bin/bash DIR=/path/to/directory/of/input/files pig -p input="{$(find $DIR -maxdepth 1 -type f -mtime -7 | tr '\n' ',')}" myscript.pig ``` `find $DIR` 查找中的所有文件 `$DIR` . `-maxdepth 1 -type f` 确保只考虑指定目录中的常规文件(无子目录)。 `-mtime -7` 将列表限制为在过去7天内修改的文件。 `tr '\n' ','` 将其转换为逗号分隔的列表。 然后,在 `myscript.pig` ,你会有这样的陈述 `data = LOAD '$input' AS (...);` 如果在集群上运行pig,则需要使用 `hdfs dfs -ls` 并对输出进行一些解析以获得文件名。
1条答案
按热度按时间brjng4g31#
不要试图在Pig的体内这样做。在bash脚本中使用参数替换。如果以本地模式在清管器中运行,则可以使用
find
获取文件的命令: