我需要从HDFS内部复制/移动到同一HDFS中的另一个位置,但目标的目录与源不同。
例如:
来源:
/warehouse/elephant/f_transactions_report/date=2012-12-01/9182837475_report_2012-12-01_processed.csv.gz
/warehouse/elephant/f_transactions_report/date=2012-12-02/9182837475_report_2012-12-02_processed.csv.gz
/warehouse/elephant/f_transactions_report/date=2012-12-03/9182837475_report_2012-12-03_processed.csv.gz ...
目的地:
/warehouse/elephant/f_transactional_events/date=2012-12-01/9182837475_report_2012-12-01_processed.csv.gz /warehouse/elephant/f_transactional_events/date=2012-12-02/9182837475_report_2012-12-02_processed.csv.gz /warehouse/elephant/f_transactional_events/date=2012-12-03/9182837475_report_2012-12-03_processed.csv.gz ...
新要求导致源名称从f_transactions_report更改为f_transactional_events。数据停止在前者中填充,但在后者中继续。现在的问题是将旧的(源)回填到切换。如何在维护文件结构的同时完成这项工作?
答案 0 :(得分:0)
找到我自己的问题的解决方案!
1. hadoop按目录获取所有日期并在本地保存。例如
hadoop fs -get / warehouse / elephant / f_transactions_report / date = 2012-12 *〜/ elephant
2。 Hadoop将所有本地保存的目录放回到新目的地。例如
hadoop fs -put~ / elephant / warehouse / elephant / f_transactional_events /
目录结构将保持不变。检查有效性!