如何使用pig或hadoop fs选项重命名具有特定扩展名的文件?

时间:2014-02-20 14:13:30

标签: hadoop apache-pig

我有基于mm / dd / yyyy分区的文件夹结构的* .gz文件 。 我想重命名以.gz扩展名结尾的文件。

请使用hadoop fs命令行选项或使用pig建议如何重命名具有特定扩展名的文件。

这是我的文件夹结构

----root folder
    |
     ---year
        -- month
         -- day
          -- filename*.gz

我想重命名扩展名为.gz的文件。请建议如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

我知道这是一个肮脏的黑客,但它对我有用。我假设您要将 .gz 文件扩展名更改为 .newextension

hadoop fs -ls root/*/*/*/filename*.gz | grep .gz \
| awk '{print "hadoop fs -mv " $NF" "$NF}' | rev \ 
| cut -c 4-| rev | sed -e 's/$/newextension/'| bash

您可以根据需要更改cut -c 4-部分进行试验。在你准备好运行之前,我建议在最后使用文件输出而不是直接bash管道:

hadoop fs -ls root/*/*/*/filename*.gz | grep .gz \
| awk '{print "hadoop fs -mv " $NF" "$NF}' | rev \ 
| cut -c 4-| rev | sed -e 's/$/newextension/' > rename_script.sh

当你对它感到满意时,运行它:

bash rename_script.sh