我正在尝试合并大量小文件(200k+),并提出了以下超级简单的pig代码:
Files = LOAD 'hdfs/input/path' using PigStorage();
store Files into 'hdfs/output/path' using PigStorage();
一旦pig完成合并,有没有办法删除输入文件?我想检查文件是否已写入并且不是空的(即0字节)。我不能简单地删除输入路径中的所有文件,因为在此期间可能插入了新文件,因此理想情况下,我只删除输入路径中的文件 Files
变量。
2条答案
按热度按时间1hdlvixo1#
您应该能够在pig脚本中使用hadoop命令
将输入文件移到新文件夹
将输入文件合并到输出文件夹
从新文件夹中删除输入文件
scyqe7ek2#
我想用Pig是不可能的。相反,您可以在load语句中使用-tagsource并获取文件名并将其存储在某个地方。然后使用hdfs文件系统api并从存储的文件中读取以删除那些被pig合并的文件。