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

歡迎訪問 生活随笔!

生活随笔

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

java

Java API操作HDFS

發布時間:2023/12/20 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java API操作HDFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?一、問題介紹

?1、基于HDFS?的Java?API實現如下功能:(1)本地文件上傳到HDFS;(2)從HDFS中下載文件到本地系統;(3)HDFS中目錄的創建、刪除、重命名;(4)查看目錄中所有文件的詳細信息。

二、步驟

準備:

在win系統下不配置hadoop環境,直接運行代碼會報錯,顯示缺少winutils.exe 和 hadoop.dll 兩個文件

1-將hadoop-win-2.7.7文件夾拷貝到一個沒有中文的路徑中;
2-在windows系統,配置hadoop的環境變量: HADOOP_HOME,并將%HADOOP_HOME%\bin添加到path中

3-:把hadoop-win-2.7.7文件夾中bin目錄下的hadoop.dll 放到系統盤: C:Windows \System32目錄下

4-關閉windows重啟
下載地址

提取碼:8o47?

1. 搭建項目環境

? 創建一個項目名為“HadoopDemo”,包名為“com.itcast”的Maven項目,并在項目的pom.xml文件中引入hadoop-common、hadoop-hdfs、hadoop-client以及單元測試junit的依賴。

依賴pom.xml

<dependencies> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.7</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.7.7</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.7</version></dependency> </dependencies>

2. 初始化客戶端對象

? 首先在項目src文件夾下創建com.itcast.hdfsdemo包,并在該包下創建HDFS_CRUD.java文件,編寫Java測試類,構建Configuration和FileSystem對象,初始化一個客戶端實例進行相應的操作

3. 上傳文件到HDFS

? 由于采用Java測試類來實現JavaApi對HDFS的操作,因此可以在HDFS_CRUD.java文件中添加一個testAddFileToHdfs()方法來演示本地文件上傳到HDFS的示例。

4. 從HDFS下載文件到本地

? 在HDFS_CRUD.java文件中添加一個testDownloadFileToLocal()方法,來實現從HDFS中下載文件到本地系統的功能。

5. 目錄操作

? 在HDFS_CRUD.java文件添加一個testMkdirAndDeleteAndRename()方法,實現目錄的創建、刪除、重命名的功能。

6. 查看目錄中的文件信息

在HDFS_CRUD.java文件中添加一個testListFiles()方法,實現查看目錄中所有文件的詳細信息的功能。

完整代碼

package com.itheima.hdfsdemo;import java.io.FileNotFoundException; import java.io.IOException;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; 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.junit.Before; import org.junit.Test;public class HDFS_CRUD {FileSystem fs = null;@Before // 此注解可以保證init方法在程序中最先執行public void init() throws IOException{// 構造一個配置參數對象,設置一個參數:要訪問的hdfs的uriConfiguration conf = new Configuration();// 這里指定使用的是hdfsconf.set("fs.defaultFS", "hdfs://hadoop01:9000");// 此處使用主機名需要配置windows的host文件// 通過如下的方式進行客戶端身份的設置System.setProperty("HADOOP_USER_NAME", "root");// 通過FileSystem的靜態方法獲取文件系統客戶端對象fs = FileSystem.get(conf);}// 上傳文件到hdfs@Testpublic void testAddFileToHdfs() throws IOException {// 要上傳的文件所在的路徑Path src = new Path("F:\\test.txt");// 要上傳到hdfs的目標路徑Path dst = new Path("/testFile"); // 一定注意此處的testFile就是上傳到hdfs的文件的名字而不是文件夾// 上傳fs.copyFromLocalFile(src, dst);//關閉資源fs.close();}// 從hdfs 中復制文件到本地文件系統@Testpublic void testDownloadFileToLocal() throws IOException {// 下載文件Path src = new Path("/testFile");Path dst = new Path("F:/");fs.copyToLocalFile(false,src, dst,true);// 關閉資源fs.close();}// 創建,刪除,重命名文件@Testpublic void testMkdirAndDeleteAndRename() throws Exception {// 創建目錄fs.mkdirs(new Path("/a/b/c"));fs.mkdirs(new Path("/a2/b2/c2"));// 重命名文件或文件夾fs.rename(new Path("/a"), new Path("/a3"));// 刪除文件夾,如果是非空文件夾,參數2必須給值為true// fs.delete(new Path("/a2"),true);}@Testpublic void testListFiles() throws FileNotFoundException, IllegalArgumentException, IOException{// 獲取迭代器對象RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);while(listFiles.hasNext()) {LocatedFileStatus fileStatus = listFiles.next();// 打印當前文件名稱System.out.println(fileStatus.getPath().getName());// 打印當前文件塊大小System.out.println(fileStatus.getBlockSize());// 打印當前文件權限System.out.println(fileStatus.getPermission());// 打印當前文件內容長度System.out.println(fileStatus.getLen());// 獲取該文件塊信息(包括長度,數據塊,datanode的信息)BlockLocation[] blockLocations = fileStatus.getBlockLocations();for (BlockLocation bl : blockLocations) {System.out.println("block-length:"+bl.getLength()+" -- "+"block-offset:"+bl.getOffset());String[] hosts = bl.getHosts();for (String host : hosts) {System.out.println(host);}}System.out.println("--------------分割線---------");}} }

三、結果?

?

總結

以上是生活随笔為你收集整理的Java API操作HDFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产偷怕 | 欧美精品三区 | 水果视频污 | 玖玖玖国产精品 | 不卡精品视频 | 久色网站 | 深爱婷婷| 先锋av资源在线 | 久久久久久九九九 | 国产福利精品在线 | 中文字幕在线一区二区三区 | 五十路在线视频 | 欧美日韩综合一区二区三区 | 久久精品视频国产 | 欧美激情一区二区三区在线 | 色老妹| 精品免费视频一区二区 | 国产香蕉精品视频 | 国产精品国产三级国产aⅴ原创 | 欧美一级乱黄 | 乱中年女人伦 | 国产小视频网址 | 97超碰在 | 自拍在线视频 | 亚洲开心网 | 成人片黄网站久久久免费 | 黄色欧美网站 | 少妇厨房愉情理伦bd在线观看 | 99国产精品久久久久久久成人热 | 欧美日韩高清免费 | 成年人午夜网站 | 国产国产乱老熟女视频网站97 | 欧美性xxxxxxxxx | 123毛片| 青青青免费在线视频 | 狼人综合网| 久久成人人人人精品欧 | 欧美日韩国产在线播放 | 操人在线观看 | av小说在线 | 裸体视频软件 | 福利毛片 | 日韩爱爱爱 | 国产成人愉拍精品久久 | 147人体做爰大胆图片成人 | 一区二区在线观看免费视频 | 高清不卡av | 国产精品永久在线观看 | 老牛影视av一区二区在线观看 | 欧美性潮喷xxxxx免费视频看 | 午夜激情视频在线播放 | 人妻少妇偷人精品视频 | 国产又黄又猛又粗又爽 | jzzijzzij亚洲成熟少妇18 欧美www在线观看 | 亚洲成人免费观看 | 亚洲综合色一区 | 色欲国产精品一区二区 | xvideos永久免费入口 | 国模杨依粉嫩蝴蝶150p | 无码国产精品高潮久久99 | 免费网站在线观看黄色 | 蜜色视频| 精品成在人线av无码免费看 | 久久av导航| 深夜福利网站在线观看 | 男人操女人免费 | 少妇毛片一区二区三区粉嫩av | 91麻豆精品国产理伦片在线观看 | 亚洲av无码一区二区三区观看 | 亚洲精品乱码久久久久久不卡 | 国产美女裸体无遮挡免费视频 | 亚洲国产欧美一区二区三区深喉 | 久久久久久伊人 | 久草a在线 | 五月激情五月婷婷 | 色综合色婷婷 | 国产操操操 | 在线理论视频 | a级小视频 | 9l视频自拍蝌蚪9l视频成人 | 自拍偷拍亚洲综合 | 永久av免费在线观看 | 乱子伦一区 | 亚洲九区 | 亚洲少妇中文字幕 | 免费一级特黄特色大片 | 精品美女久久久 | 最新网址av| a√在线视频 | 一区二区三区美女 | av在线一区二区 | 国产另类xxxxhd高清 | 99热6这里只有精品 三级av在线免费观看 | 午夜影院毛片 | 成人欧美视频 | 蜜桃视频一区二区三区在线观看 | 色01看片网 | 户外少妇对白啪啪野战 | 91九色视频在线观看 |