合并后用pig脚本删除文件

7gyucuyw  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(467)

我正在尝试合并大量小文件(200k+),并提出了以下超级简单的pig代码:

Files = LOAD 'hdfs/input/path' using PigStorage();
store Files into 'hdfs/output/path' using PigStorage();

一旦pig完成合并,有没有办法删除输入文件?我想检查文件是否已写入并且不是空的(即0字节)。我不能简单地删除输入路径中的所有文件,因为在此期间可能插入了新文件,因此理想情况下,我只删除输入路径中的文件 Files 变量。

1hdlvixo

1hdlvixo1#

您应该能够在pig脚本中使用hadoop命令
将输入文件移到新文件夹
将输入文件合并到输出文件夹
从新文件夹中删除输入文件

distcp 'hdfs/input/path' 'hdfs/input/new_path'

Files = LOAD 'hdfs/input/new_path' using PigStorage();
STORE Files into 'hdfs/output/path' using PigStorage();

rmdir 'hdfs/input/new_path'
scyqe7ek

scyqe7ek2#

我想用Pig是不可能的。相反,您可以在load语句中使用-tagsource并获取文件名并将其存储在某个地方。然后使用hdfs文件系统api并从存储的文件中读取以删除那些被pig合并的文件。

A = LOAD '/path/' using PigStorage('delimiter','-tagsource');

相关问题