Distcp 複製多個源路徑

2021-09-29 18:24:15 字數 1309 閱讀 5146

兩種方法:

把源路徑依次寫在命令中

把源路徑寫到檔案中,上傳到hdfs,使用 distcp -f ns1/source.txt dest 則能複製。

把 ns1/abc/sdk/2019-01-01

ns1/abc/sdk/2019-01-02

ns1/abc/sdk/2019-01-03

的資料拷貝到:

ns1/abc/sdk/1900-01-01【/1900-01-01這個資料夾可以不存在,distcp會自動建立不存在的資料夾】

命令1:

hadoop distcp -m 500  -overwrite 'ns1/abc/sdk/2019-01-01/' 'ns1/abc/sdk/2019-01-02/' 'ns1/abc/sdk/2019-01-03/'  'ns1/abc/sdk/1900-01-01/'

報錯:源路徑裡面有重複檔案,不能使用overwrite,需要把overwrite去掉!【如果目標路徑有資料,需要先清空資料】

命令2:

hadoop distcp -m 500   'ns1/abc/sdk/2019-01-01/' 'ns1/abc/sdk/2019-01-02/' 'ns1/abc/sdk/2019-01-03/'  'ns1/abc/sdk/1900-01-01/'

能成功執行,但是結果卻是:

ns1/abc/sdk/1900-01-01/2019-01-01

ns1/abc/sdk/1900-01-01/2019-01-02

ns1/abc/sdk/1900-01-01/2019-01-03

不是想要的!!方法1:【hive移動資料,去除多餘路徑

命令3:【方法2】【最正確的】

hadoop distcp -m 500   'ns1/abc/sdk/2019-01-01/*' 'ns1/abc/sdk/2019-01-02/*' 'ns1/abc/sdk/2019-01-03/*'  'ns1/abc/sdk/1900-01-01/'

後面的【*】一定要帶!!

這樣/1900-01-01/下面就直接是資料檔案了!

-m 500 表示同時最多同時執行500個map任務。

distcp拷貝多少個檔案(不管乙個檔案多大,包括空檔案)就有多少個map任務。沒有reduce任務。

不加-pt則檔案時間會變化,加-pt時則檔案時間不變。

會自動建立目標資料夾。

distcp 複製到同路徑下 複製到不同路徑下

複製到同路徑下 a b c a b c distcp pt hdfs a b c 2021 02 01 hdfs a b c 1900 01 01 結果是 hdfs a b c 1900 01 01 2021 02 01 2 這才是對的,直接複製檔案過來。distcp pt hdfs a b c 2...

HDFS並行複製Distcp

1 distcp 分布式拷貝 是用於大規模集群內部和集群之間拷貝的工具。2 distcp命令是以mr作業 沒有r任務 的形式實現的,把檔案和目錄的列表作為m任務的輸入。每乙個檔案是由乙個m任務來拷貝的,distcp盡量把大小之和相同的各個檔案匯入到同乙個m任務中。這樣可以每個m任務拷貝的資料量大致相...

hadoop 通過distcp進行並行複製

通過distcp進行並行複製 前面的hdfs訪問模型都集中於單執行緒的訪問。例如通過指定檔案通配,我們可以對一部分檔案進行處理,但是為了高效,對這些檔案的並行處理需要新寫乙個程式。hadoop有乙個叫distcp 分布式複製 的有用程式,能從hadoop的檔案系統並行複製大量資料。distcp一般用...