激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - JAVA教程 - HDFS的Java API的訪問方式實(shí)例代碼

HDFS的Java API的訪問方式實(shí)例代碼

2021-03-31 11:06墨梅寒香 JAVA教程

這篇文章主要介紹了HDFS的Java API的訪問方式實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下

本文研究的主要是HDFSJava API的訪問方式,具體代碼如下所示,有詳細(xì)注釋。

最近的節(jié)奏有點(diǎn)兒快,等有空的時(shí)候把這個(gè)封裝一下

實(shí)現(xiàn)代碼

要導(dǎo)入的包:

?
1
2
3
4
5
6
7
8
9
10
11
12
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;

實(shí)體方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
   * 獲取HDFS文件系統(tǒng)
   * @return
   * @throws IOException
   * @throws URISyntaxException
   */
public static FileSystem getFileSystem() throws IOException, URISyntaxException{
    //read config file
    Configuration conf = new Configuration();
    //返回默認(rèn)文件系統(tǒng)
    //如果在Hadoop集群下運(yùn)行,使用此種方法可以直接獲取默認(rèn)文件系統(tǒng)
    //FileSystem fs = FileSystem.get(conf);
    //指定的文件系統(tǒng)地址
    URI uri = new URI("hdfs://hy:9000");
    //返回指定的文件系統(tǒng)
    //如果在本地測試,需要使用此種方法獲取文件系統(tǒng)
    FileSystem fs = FileSystem.get(uri, conf);
    return fs;
}
/**
   * 創(chuàng)建文件目錄
   * @throws Exception
   */
public static void mkdir() throws Exception{
    //獲取文件系統(tǒng)
    FileSystem fs = getFileSystem();
    //創(chuàng)建文件目錄
    fs.mkdirs(new Path("hdfs://hy:9000/hy/weibo"));
    //釋放資源
    fs.close();
}
/**
   * 刪除文件或者文件目錄
   * @throws Exception
   */
public static void rmdir() throws Exception{
    //獲取文件系統(tǒng)
    FileSystem fs = getFileSystem();
    //刪除文件或者文件目錄
    fs.delete(new Path("hdfs://hy:9000/hy/weibo"), true);
    //釋放資源
    fs.close();
}
/**
   * 獲取目錄下所有文件
   * @throws Exception
   */
public static void listAllFile() throws Exception{
    //獲取文件系統(tǒng)
    FileSystem fs = getFileSystem();
    //列出目錄內(nèi)容
    FileStatus[] status = fs.listStatus(new Path("hdfs://hy:9000/hy/"));
    //獲取目錄下所有文件路徑
    Path[] listedPaths = FileUtil.stat2Paths(status);
    //循環(huán)讀取每個(gè)文件
    for (Path path : listedPaths) {
        System.out.println(path);
    }
    //釋放資源
    fs.close();
}
/**
   * 將文件上傳至HDFS
   * @throws Exception
   */
public static void copyToHDFS() throws Exception{
    //獲取文件對象
    FileSystem fs = getFileSystem();
    //源文件路徑是Linux下的路徑 Path srcPath = new Path("/home/hadoop/temp.jar");
    //如果需要在windows下測試,需要改為Windows下的路徑,比如 E://temp.jar
    Path srcPath = new Path("E://temp.jar");
    //目的路徑
    Path dstPath = new Path("hdfs://hy:9000/hy/weibo");
    //實(shí)現(xiàn)文件上傳
    fs.copyFromLocalFile(srcPath, dstPath);
    //釋放資源
    fs.close();
}
/**
   * 從HDFS上下載文件
   * @throws Exception
   */
public static void getFile() throws Exception{
    //獲得文件系統(tǒng)
    FileSystem fs = getFileSystem();
    //源文件路徑
    Path srcPath = new Path("hdfs://hy:9000/hy/weibo/temp.jar");
    //目的路徑,默認(rèn)是Linux下的
    //如果在Windows下測試,需要改為Windows下的路徑,如C://User/andy/Desktop/
    Path dstPath = new Path("D://");
    //下載HDFS上的文件
    fs.copyToLocalFile(srcPath, dstPath);
    //釋放資源
    fs.close();
}
/**
   * 獲取HDFS集群點(diǎn)的信息
   * @throws Exception
   */
public static void getHDFSNodes() throws Exception{
    //獲取文件系統(tǒng)
    FileSystem fs = getFileSystem();
    //獲取分布式文件系統(tǒng)
    DistributedFileSystem hdfs = (DistributedFileSystem)fs;
    //獲取所有節(jié)點(diǎn)
    DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats();
    //循環(huán)比遍歷
    for (int i = 0; i < dataNodeStats.length; i++) {
        System.out.println("DataNote_" + i + "_Name:" + dataNodeStats[i].getHostName());
    }
    //釋放資源
    fs.close();
}
/**
   * 查找某個(gè)文件在HDFS集群的位置
   * @throws Exception
   */
public static void getFileLocal() throws Exception{
    //獲取文件系統(tǒng)
    FileSystem fs = getFileSystem();
    //文件路徑
    Path path = new Path("hdfs://hy:9000/hy/weibo/temp.jar");
    //獲取文件目錄
    FileStatus fileStatus = fs.getFileStatus(path);
    //獲取文件塊位置列表
    BlockLocation[] blockLocations = fs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());
    //循環(huán)輸出塊信息
    for (int i = 0; i < blockLocations.length; i++) {
        String[] hosts = blockLocations[i].getHosts();
        System.out.println("block_" + i + "_location:" + hosts[0]);
    }
    //釋放資源
    fs.close();
}

總結(jié)

以上就是本文關(guān)于HDFS的Java API的訪問方式實(shí)例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/u010176083/article/details/52464558

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲情av | 国产91九色在线播放 | 91精品国产综合久久婷婷香 | 久久久电影电视剧免费看 | 在线视频 亚洲 | 男女隐私免费视频 | 性色av一区二区三区在线播放亚… | 久久精品a一级国产免视看成人 | av在线免费看片 | 免费国产自久久久久三四区久久 | 国产免费区 | 久久精品亚洲一区 | 日本精品一二区 | 一级看片免费视频 | 日本在线视频免费观看 | 久久精品视频69 | 国产自在线 | 香蕉国产片 | 色阁五月 | 色天使中文字幕 | 久久不雅视频 | 羞羞视频免费观看网站 | 精品中文字幕在线观看 | 免费看一级毛片欧美 | 99riav视频一区二区 | fc2成人免费人成在线观看播放 | 国产亚洲精品成人 | 午夜小电影 | 欧美日韩在线免费观看 | 中文字幕亚洲情99在线 | 欧美日韩爱爱视频 | 欧美精品第1页 | 欧美视频一级 | 狠狠干夜夜操 | 成人午夜在线观看视频 | 欧美性生活视频免费 | 久久久久中精品中文字幕19 | 水多视频在线观看 | 一级视频片| 色99久久| 国产精品av久久久久久网址 |