合并后,使用Pig脚本删除文件

时间:2016-03-30 07:21:14

标签: apache-pig hdfs

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

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

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

2 个答案:

答案 0 :(得分:0)

对猪来说,我猜不可能。相反,您可以使用-tagsource和LOAD语句并获取文件名并将其存储在某处。然后使用HDFS FileSystem API并从存储的文件中读取以删除由pig合并的那些文件。

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

答案 1 :(得分:0)

您应该能够在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'