日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

hdfs java api 权限_HDFS Java API 详解

發(fā)布時間:2025/3/12 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdfs java api 权限_HDFS Java API 详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Hadoop版本: ?Hadoop 2.6.0

連接HDFS

String?URL="hdfs://hadoop001:9000";

Configuration?conf?=?new?Configuration();

conf.set("fs.defaultFS",?URL);

FileSystem?fs?=?FileSystem.get(conf);

上傳文件到HDFS

//獲取本地文件的輸入流

FileInputStream?in=new?FileInputStream("d://aaa.mp3");

//獲取hdfs的輸出流,默認是覆蓋已存在的同名文件

//上傳到hdfs根目錄/

FSDataOutputStream?output?=?fs.create(new?Path("/bbb.mp3"));

//通過commons中的工具類copy文件到hdfs

IOUtils.copy(in,?output);

簡單方法

/*

*?copyFromLocalFile(Path?src,?Path?dst)

*?該方法對上面的過程進行了封裝,使操作更加簡單。

*/

fs.copyFromLocalFile(new?Path("d://abc.mp3"),?new?Path("/bcd.mp3"));

讀取HDFS文件

Path?inHdfs=new?Path("/bbb.mp3");

if(fs.exists(inHdfs)){

//獲取hdfs的輸入流

FSDataInputStream?in?=?fs.open(inHdfs);

//獲取本地文件的輸出流

FileOutputStream?out=new?FileOutputStream("d://aaa.mp3");

//寫文件到本地磁盤

//或使用IOUtils.copy(in,?output);

byte[]?buf=new?byte[1024];

int?next=0;

while((next=in.read(buf))!=-1){

out.write(buf,?0,?next);

}

}

簡單方法

//copyToLocalFile(Path?src,?Path?dst)

fs.copyToLocalFile(inHdfs,?new?Path("c://aaa.mp3"));

注意:如果要從hdfs復制文件到windows系統(tǒng),需要設(shè)置useRawLocalFileSystem的值為true。否則會拋出空指針異常。

默認是使用HDFS的文件系統(tǒng),如果是windows系統(tǒng),需要使用原生的本地文件系統(tǒng)。

(???這里不是很明白,沒讀懂源碼。)

/*

*?delSrc:是否刪除原文件

*?Path?src:源文件

*?Path?dst:目的文件

*?useRawLocalFileSystem:是否使用原生本地文件系統(tǒng)

*/

fs.copyToLocalFile(false,new?Path("/f1/bbb.pdf"),?new?Path("c://abc.pdf"),true);

刪除HDFS文件

/*

*??delete(Path?f,?boolean?recursive)

*??當刪除非空目錄時,recursive必須為true

*/

fs.delete(new?Path("/file1),?true);

創(chuàng)建目錄

//在hdfs的根目錄下創(chuàng)建文件夾

foofs.mkdirs(new?Path("/foo"));

//文件夾的默認權(quán)限是755,也可以通過第二個參數(shù)設(shè)置權(quán)限mkdirs(Path,?FsPermission)

如果文件夾的目錄是相對路徑,hdfs會做如下處理:

源碼位置:FileSystem#fixRelativePart()

if?(p.isUriPathAbsolute())?{?//如果是絕對路徑(/開始的路徑),直接使用

return?p;

}?else?{//如果是相對路徑,在當前用戶的home目錄下創(chuàng)建該目錄

return?new?Path(getWorkingDirectory(),?p);

}

例如你在windows系統(tǒng)中執(zhí)行的操作,假設(shè)當前windows的賬戶名是Administrator(管理員賬戶登陸),那么在hdfs中的home目錄即:/user/Administrator。

fs.mkdirs(new?Path("foo"));

執(zhí)行完上面的代碼,就會在hdfs中創(chuàng)建目錄結(jié)構(gòu): /user/Administrator/foo

Thanks a lot!

END!

總結(jié)

以上是生活随笔為你收集整理的hdfs java api 权限_HDFS Java API 详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。