HDFS常用的Api
生活随笔
收集整理的這篇文章主要介紹了
HDFS常用的Api
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
HDFS常用的Api:
package com.jxd.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.junit.After; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays;public class HdfsClient {private FileSystem fs;@Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {URI uri = new URI("hdfs://hadoop102:8020");Configuration configuration = new Configuration();String user = "jxd";fs = FileSystem.get(uri, configuration, user);}@Afterpublic void close() throws IOException {fs.close();}/*** 創(chuàng)建目錄** @throws IOException*/@Testpublic void testMkdir() throws IOException {fs.mkdirs(new Path("/xiyou/huaguoshan"));}/*** 上傳文件* hdfs-default.xml < hdfs-site.xml < 在resources目錄下創(chuàng)建的配置文件 < configuration對(duì)象設(shè)置** @throws IOException*/@Testpublic void testPut() throws IOException {// 是否刪除原數(shù)據(jù) 是否覆蓋 原數(shù)據(jù)路徑 目的路徑fs.copyFromLocalFile(false, false, new Path("G:\\input\\hello.txt"), new Path("hdfs://hadoop102/xiyou/huaguoshan"));}/*** 下載文件** @throws IOException*/@Testpublic void testGet() throws IOException {// 下載后是否刪除hdfs中的文件 原文件的路徑 目的地址 是否開啟本地校驗(yàn)fs.copyToLocalFile(false, new Path("hdfs://hadoop102/xiyou/huaguoshan"), new Path("G:\\"), false);}/*** 刪除文件** @throws IOException*/@Testpublic void testRm() throws IOException {// 目標(biāo)路徑 是否遞歸刪除fs.delete(new Path("hdfs://hadoop102/sanguo"), true);}/*** 重命名文件和移動(dòng)文件*/@Testpublic void renameAndMove() throws IOException {// 原文件路徑 目標(biāo)文件路徑fs.rename(new Path("hdfs://hadoop102/input/word.txt"), new Path("hdfs://hadoop102/input/word1.txt"));}/*** 獲取文件或文件夾的詳細(xì)信息** @throws IOException*/@Testpublic void testLookFileDetail() throws IOException {// 獲取所有的目標(biāo)文件RemoteIterator<LocatedFileStatus> files = fs.listFiles(new Path("hdfs://hadoop102/"), true);// 遍歷文件while (files.hasNext()) {LocatedFileStatus fileStatus = files.next();// 獲取文件的詳細(xì)信息System.out.println("Path: " + fileStatus.getPath());System.out.println("Permission: " + fileStatus.getPermission());System.out.println("Owner: " + fileStatus.getOwner());System.out.println("Group: " + fileStatus.getGroup());System.out.println("FileSize: " + fileStatus.getLen());System.out.println("ModificationTime: " + fileStatus.getModificationTime());System.out.println("Replication: " + fileStatus.getReplication());System.out.println("BlockSize: " + fileStatus.getBlockSize());System.out.println("Name: " + fileStatus.getPath().getName());// 獲取塊信息BlockLocation[] blockLocations = fileStatus.getBlockLocations();System.out.println("BlockLocation: " + Arrays.toString(blockLocations));}}/*** 判斷是文件還是目錄* @throws IOException*/@Testpublic void TestIsFileOrDir() throws IOException {FileStatus[] listStatus = fs.listStatus(new Path("hdfs://hadoop102/"));for (FileStatus status : listStatus) {if(status.isFile()){System.out.println("文件:" + status.getPath().getName());}else{System.out.println("目錄:" + status.getPath().getName());}}} }總結(jié)
以上是生活随笔為你收集整理的HDFS常用的Api的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存大比拼:顶级品牌VS性价比之选
- 下一篇: 一个Mapreduce案例