更新時(shí)間:2023年02月03日12時(shí)01分 來源:傳智教育 瀏覽次數(shù):
在HDFS_CRUD.java文件中添加一個(gè)testDownloadFileToLocal()方法,來實(shí)現(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對(duì)象的copyToLocalFile()方法從HDFS上下載文件到本地。copyToLocalFile()方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)是HDFS上的文件路徑,第二個(gè)參數(shù)是下載到本地的目標(biāo)路徑。
注意:在Windows平臺(tái)開發(fā)HDFS項(xiàng)目時(shí),若不設(shè)置Hadoop開發(fā)環(huán)境,則會(huì)報(bào)以下錯(cuò)誤:
java.io.IOException: (null) entry in command string: null chmod 0644 D:\testFile
解決方式:
(1)根據(jù)教材提示,安裝配置Windows平臺(tái)Hadoop(注意,配置后必須重啟電腦),運(yùn)行沒有問題。
(2)直接使用下載的Linux平臺(tái)下的Hadoop壓縮包進(jìn)行解壓,然后在解壓包bin目錄下額外添加Windows相關(guān)依賴文件(winutils.exe、winutils.pdb、hadoop.dll),然后進(jìn)行Hadoop環(huán)境變量配置(注意,配置后必須重啟電腦),運(yùn)行同樣沒有問題。
(3)使用FileSystem自帶的方法即使不配置Windows平臺(tái)Hadoop也可以正常運(yùn)行(這種方法下載后就是沒有附帶一個(gè)類似.testFile.crc的校驗(yàn)文件):
fs.copyToLocalFile(false,new Path("/testFile"), new Path("D:/"),true);
北京校區(qū)