更新時間:2023年02月03日12時01分 來源:傳智教育 瀏覽次數(shù):
在HDFS_CRUD.java文件中添加一個testDownloadFileToLocal()方法,來實現(xiàn)從HDFS中下載文件到本地系統(tǒng)的功能,具體代碼如下:
//從HDFS中復(fù)制文件到本地文件系統(tǒng) @Test public void testDownloadFileToLocal() throws IllegalArgumentException, IOException{ //下載文件 fs.copyToLocalFile(new Path("/testFile"), new Path("D:/")); fs.close(); }
從上述代碼可以看出,可以通過FileSystem對象的copyToLocalFile()方法從HDFS上下載文件到本地。copyToLocalFile()方法接收兩個參數(shù),第一個參數(shù)是HDFS上的文件路徑,第二個參數(shù)是下載到本地的目標路徑。
注意:在Windows平臺開發(fā)HDFS項目時,若不設(shè)置Hadoop開發(fā)環(huán)境,則會報以下錯誤:
java.io.IOException: (null) entry in command string: null chmod 0644 D:\testFile
解決方式:
(1)根據(jù)教材提示,安裝配置Windows平臺Hadoop(注意,配置后必須重啟電腦),運行沒有問題。
(2)直接使用下載的Linux平臺下的Hadoop壓縮包進行解壓,然后在解壓包bin目錄下額外添加Windows相關(guān)依賴文件(winutils.exe、winutils.pdb、hadoop.dll),然后進行Hadoop環(huán)境變量配置(注意,配置后必須重啟電腦),運行同樣沒有問題。
(3)使用FileSystem自帶的方法即使不配置Windows平臺Hadoop也可以正常運行(這種方法下載后就是沒有附帶一個類似.testFile.crc的校驗文件):
fs.copyToLocalFile(false,new Path("/testFile"), new Path("D:/"),true);