欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何使用Java代碼訪問HDFSdocx

錢艷冰2年前13瀏覽0評論

如何使用Java代碼訪問HDFSdocx?

1 : 上傳本地文件到HDFS

@Test

public void testUpload() throws Exception {

Configuration conf = new Configuration();

//默認值,可以不設置

conf.set("dfs.blocksize", "128m");

// 1.先獲取一個訪問HDFS的客戶端對象

// 參數1:URI-hdfs集群的訪問地址 參數2:客戶端需要攜帶的參數對象 參數3:指明客戶端的身份

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

//fs的copyFromLocalFile()方法上傳文件

//ziliao.docx為給文件重命名

fs.copyFromLocalFile(new Path("G:/a.docx"), new Path("/ziliao.docx"));

//關閉資源

fs.close();

}

上傳結果:

2 : 創建目錄

/**

* 測試創建目錄

* @throws Exception

*/

@Test

public void testMkdir() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

//創建一個目錄,aaa下面的bbb

fs.mkdirs(new Path("/aaa/bbb"));

fs.close();

}

創建結果:

3 : 下載文件到本地

方法一:

下載操作,會涉及到客戶端本地系統的訪問,hadoop為本地訪問專門封裝了本地平臺庫(C語言)

具體做法:將本地庫解壓到任意位置,并將解壓目錄配置到HADOOP_HOME環境變量中

/**

* 測試下載文件

* 具體做法:將本地庫解壓到任意位置,并將解壓目錄配置到HADOOP_HOME環境變量中

* @throws Exception

*/

@Test

public void testDownLoad() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

fs.copyToLocalFile(new Path("/ziliao.docx"), new Path("E:/"));

fs.close();

}

下載結果:

方法二 : 此方法不需要hadoop本地C語言庫

/**

* 測試下載文件

* @throws Exception

*/

@Test

public void testDownLoad() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

//方法一:使用hadoop本地C語言庫

//具體做法:將本地庫解壓到任意位置,并將解壓目錄配置到HADOOP_HOME環境變量中

//fs.copyToLocalFile(new Path("/ziliao.docx"), new Path("E:/"));

//方法二:使用java類庫 第一個參數為是否是否刪除源.中間倆個參數為路徑,最后一個參數useRawLocalFileSystem為是用本地java庫

fs.copyToLocalFile(false, new Path("/ziliao.docx"), new Path("E:/"), true);

fs.close();

}

下載結果:

4 : 刪除文件

/**

* 測試刪除

* @throws Exception

*/

@Test

public void testRm() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

//參數一:要刪除的路徑. 參數二:是否遞歸

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

fs.close();

}

刪除之前:

刪除之后:

5 : 移動或重命名文件或文件夾

/**

* 測試移動或重命名文件或文件夾

* @throws Exception

*/

@Test

public void testMv() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

//第一個參數為原文件名或路徑,第二個參數為修改的文件名或路徑

fs.rename(new Path("/ziliao.docx"), new Path("/haha.docx"));

fs.close();

}

重命名之前:

重命名之后:

6 : 判斷文件或文件夾是否存在

代碼;

/**

* 判斷文件是否存在

* @throws Exception

*/

@Test

public void testIfExist() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

boolean exists = fs.exists(new Path("/aaa"));

System.out.println(exists);

fs.close();

}

文件 :

判斷結果 : 不存在

7 : 判斷一個路徑是否為文件

/**

* 判斷文件或文件夾是否存在

* @throws Exception

*/

@Test

public void testIfExist() throws Exception {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000"), conf, "root");

//boolean exists = fs.exists(new Path("/aaa"));

boolean isfile = fs.isFile(new Path("haha.docx"));

//System.out.println(exists);

System.out.println(isfile);

fs.close();

}

8 : 查看文件目錄,僅顯示文件信息

/**

* 查看文件目錄

* @throws IOException

* @throws InterruptedException

* @throws URISyntaxException

*/

@Test

public void testLs1() throws IOException, InterruptedException, URISyntaxException {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://marshal:9000/"), conf, "root");

// 思考:為何返回迭代器?

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

while(iterator.hasNext()) {

LocatedFileStatus file = iterator.next();

System.out.println("文件的所屬組:" + file.getGroup());

System.out.println("文件的所有者:" + file.getOwner());

System.out.println("文件的訪問時間:" + file.getAccessTime());

System.out.println("文件的塊大?。? + file.getBlockSize());

System.out.println("文件的總長度:" + file.getLen());

System.out.println("文件的修改時間:" + file.getModificationTime());

System.out.println("文件的副本數:" + file.getReplication());

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

System.out.println("文件的權限:" + file.getPermission());

BlockLocation[] blockLocations = file.getBlockLocations();

System.out.println("文件的塊位置信息---------------------------");

for (BlockLocation blk : blockLocations) {

System.out.println("塊長度:" + blk.getLength());

System.out.println("塊在文件中的起始偏移量:" + blk.getOffset());

System.out.println("塊所在的datanode主機:" + Arrays.toString(blk.getHosts()));

}

System.out.println("文件的塊位置信息---------------------------");

}

}

文件如下 :

運行結果:

文件的所屬組:supergroup

文件的所有者:root

文件的訪問時間:1532698212551

文件的塊大?。?34217728

文件的總長度:729927107

文件的修改時間:1532698346956

文件的副本數:3

文件的路徑:hdfs://marshal:9000/aaa/bbb/ideaIU-2018.1.6.win.zip

文件的權限:rw-r--r--

文件的塊位置信息---------------------------

塊長度:134217728

塊在文件中的起始偏移量:0

塊所在的datanode主機:[marshal002, marshal001, marshal]

塊長度:134217728

塊在文件中的起始偏移量:134217728

塊所在的datanode主機:[marshal001, marshal002, marshal]

塊長度:134217728

塊在文件中的起始偏移量:268435456

塊所在的datanode主機:[marshal002, marshal001, marshal]

塊長度:134217728

塊在文件中的起始偏移量:402653184

塊所在的datanode主機:[marshal002, marshal001, marshal]

塊長度:134217728

塊在文件中的起始偏移量:536870912

塊所在的datanode主機:[marshal002, marshal003, marshal]

塊長度:58838467

塊在文件中的起始偏移量:671088640

塊所在的datanode主機:[marshal001, marshal003, marshal]

文件的塊位置信息---------------------------

文件的所屬組:supergroup

文件的所有者:root

文件的訪問時間:1532687744326

文件的塊大?。?34217728

文件的總長度:1622342

文件的修改時間:1532681955786

文件的副本數:3

文件的路徑:hdfs://marshal:9000/haha.docx

文件的權限:rw-r--r--

文件的塊位置信息---------------------------

塊長度:1622342

塊在文件中的起始偏移量:0

塊所在的datanode主機:[marshal, marshal001, marshal003]

文件的塊位置信息---------------------------

文件的所屬組:supergroup

文件的所有者:root

文件的訪問時間:1532684863581

文件的塊大?。?34217728

文件的總長度:139

文件的修改時間:1532511577743

文件的副本數:3

文件的路徑:hdfs://marshal:9000/hdfs-mgmt.sh

文件的權限:rw-r--r--

文件的塊位置信息---------------------------

塊長度:139

塊在文件中的起始偏移量:0

塊所在的datanode主機:[marshal002, marshal001, marshal003]

文件的塊位置信息---------------------------

9 : 查看文件目錄,顯示文件以及文件夾信息

/**

* 查看文件目錄,顯示文件和文件夾信息

* @throws IOException

* @throws InterruptedException

* @throws URISyntaxException

*/

public void testLs2() throws IOException, InterruptedException, URISyntaxException {

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://cts01:9000/"), conf, "root");

// 思考:為何返回數組?

FileStatus[] listStatus = fs.listStatus(new Path("/"));

for (FileStatus f : listStatus) {

System.out.println(f.getPath());

}

fs.close();

}

運行結果 :

hdfs://marshal:9000/aaa

hdfs://marshal:9000/haha.docx

hdfs://marshal:9000/hdfs-mgmt.sh

java 訪問文件,如何使用Java代碼訪問HDFSdocx