大數(shù)據(jù)hadoop生態(tài)體系之通過hadoop client API操作HDFS文件(10)

1.通過eclise或者idea的maven工具創(chuàng)建普通java項目

2.在pox.xml文件中添加依賴,下載hadoop client api需要依賴的jar包:

3.創(chuàng)建測試類,通過junit進行通過API操作hdfs系統(tǒng)文件的測試

package com.hadooptest;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.net.URI;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.BlockLocation;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileStatus;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.LocatedFileStatus;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.RemoteIterator;

import org.apache.hadoop.io.IOUtils;

import org.apache.hadoop.util.Progressable;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

/**

* hdfs client api 通過hdfs 客戶端api操作hdfs服務(wù)器

* @author Administrator

*/

public class HdfsAPITest {

FileSystem fileSystem = null;

Configuration configuration = null;

@Before

public void init() throws Exception {

configuration = new Configuration();

// 設(shè)置副本數(shù) : 取決于你的datanodes節(jié)點數(shù)

configuration.set("dfs.replication", "1");

fileSystem = FileSystem.get(new URI("hdfs://hadoop00:8020"), configuration, "root");

}

/**

* 通過hdsf client api創(chuàng)建文件目錄

* @throws Exception

*/

@Test

public void mkdir() throws Exception {

boolean result = fileSystem.mkdirs(new Path("/hdfsapi/test"));

System.out.println(result);

}

/**

* 創(chuàng)建文件到hdfs服務(wù)器

* @throws Exception

*/

@Test

public void create() throws Exception {

FSDataOutputStream out = fileSystem.create(new Path("/hdfsapi/test/test1.java"));

out.writeUTF("hello hadoop's hdfs!");

out.flush();

out.close();

}

/**

* 重命名

* @throws Exception

*/

@Test

public void rename() throws Exception {

boolean result = fileSystem.rename(new Path("/hdfsapi/test/test1.java"), new Path("/hdfsapi/test/test.py"));

System.out.println(result);

}

/**

* 本地文件上傳到hdfs服務(wù)器

* @throws Exception

*/

@Test

public void copyfromlocalfile() throws Exception {

fileSystem.copyFromLocalFile(new Path("d://word.txt"), new Path("/hdfsapi/test"));

}

/**

* 帶進度條的文件上傳

* @throws Exception

*/

@Test

public void copyfromlocalfileprocess() throws Exception {

InputStream in = new BufferedInputStream(new FileInputStream(new File("D://software//navicat_premium12.zip")));

FSDataOutputStream out = fileSystem.create(new Path("/hdsfapi/test/navicat_premium12.zip"), new Progressable() {

public void progress() {

System.out.print(".");

}

});

IOUtils.copyBytes(in, out, 1024);

}

/**

* 復(fù)制文件到本地

* @throws Exception

*/

@Test

public void copytolocalfile() throws Exception {

fileSystem.copyToLocalFile(new Path("/hdfsapi/test/test.py"), new Path("D://hdfsapi//test.py"));

}

/**

* 查詢文件列表

* @throws Exception

*/

@Test

public void fileList() throws Exception {

FileStatus[] listStatus = fileSystem.listStatus(new Path("/hdfsapi/test"));

for (FileStatus file : listStatus) {

if (file.isDirectory()) {

System.out.println("文件夾");

} else {

System.out.println("文件:" + file.getPath());

}

}

}

/**

* 遞歸查詢子文件夾中的文件

* @throws Exception

*/

@Test

public void fileListRecursive() throws Exception {

RemoteIterator<LocatedFileStatus> listFiles = fileSystem.listFiles(new Path("/"), true);

while (listFiles.hasNext()) {

LocatedFileStatus file = listFiles.next();

System.out.println(file.getPath().toString() + file.getLen() + file.getOwner() + file.getPermission()

+ file.getReplication());

}

}

/**

* 獲取文件的塊信息

* @throws Exception

*/

@Test

public void getblockLocations() throws Exception {

FileStatus fileStatus = fileSystem.getFileStatus(new Path("/hdfsapi/test/test.java"));

BlockLocation[] blocks = fileSystem.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());

for (BlockLocation block : blocks) {

for (String name : block.getNames()) {

System.out.println(name + block.getLength() + ":" + block.getOffset());

}

}

}

/**

* 遞歸刪除文件目錄及文件

*

* @throws Exception

*/

@Test

public void deletefile() throws Exception {

boolean result = fileSystem.delete(new Path("/hdfsapi/test/1"), true);

System.out.println(result);

}

@After

public void destory() throws Exception {

configuration = null;

fileSystem.close();

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炕矮,一起剝皮案震驚了整個濱河市锐膜,隨后出現(xiàn)的幾起案子琼懊,更是在濱河造成了極大的恐慌抡笼,老刑警劉巖锚贱,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欢策,死亡現(xiàn)場離奇詭異吆寨,居然都是意外死亡,警方通過查閱死者的電腦和手機踩寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門啄清,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俺孙,你說我怎么就攤上這事辣卒≈兰郑” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵荣茫,是天一觀的道長想帅。 經(jīng)常有香客問我,道長啡莉,這世上最難降的妖魔是什么港准? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮票罐,結(jié)果婚禮上叉趣,老公的妹妹穿的比我還像新娘。我一直安慰自己该押,他們只是感情好疗杉,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚕礼,像睡著了一般烟具。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奠蹬,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天朝聋,我揣著相機與錄音,去河邊找鬼囤躁。 笑死冀痕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狸演。 我是一名探鬼主播言蛇,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宵距!你這毒婦竟也來了腊尚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤满哪,失蹤者是張志新(化名)和其女友劉穎婿斥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哨鸭,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡民宿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了像鸡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勘高。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出华望,到底是詐尸還是另有隱情,我是刑警寧澤仅乓,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布赖舟,位于F島的核電站,受9級特大地震影響夸楣,放射性物質(zhì)發(fā)生泄漏宾抓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一豫喧、第九天 我趴在偏房一處隱蔽的房頂上張望石洗。 院中可真熱鬧,春花似錦紧显、人聲如沸讲衫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涉兽。三九已至,卻和暖如春篙程,著一層夾襖步出監(jiān)牢的瞬間枷畏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工虱饿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拥诡,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓氮发,卻偏偏與公主長得像渴肉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子折柠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容