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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop API编程——FileSystem操作

發布時間:2025/6/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop API编程——FileSystem操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于前面配置的HDFS偽分布式模式進行實驗,完全分布式模式下次來搞。。
創建Java項目,File->New->Java Project,命名為TestHDFS
采用單元測試做實驗,加入單元測試依賴包,項目導航欄里右鍵Build Path->AddLibraries->JUnit,以上操作完成如下:


引入hadoop相關外部jar包,Build Path->Add ExternalArchives,jar包包括: hadoop/lib/*.jar,hadoop/hadoop-core-1.2.1.jar
創建一個java類,TestHDFS.java,繼承junit.framework.TestCase,代碼開始寫: 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.Path; import org.apache.hadoop.io.IOUtils; import org.junit.Test;
import junit.framework.TestCase;

public class TestHDFS extends TestCase { ? ?public static StringhdfsUrl = "hdfs://192.168.1.106:8020";
? @Test ? public voidtestHDFSMkdir() throws Exception{ ?//create HDFS folder創建一個文件夾 ? ??Configuration conf= new Configuration(); ? ??FileSystem fs =FileSystem.get(URI.create(hdfsUrl),conf); ? ??Path path = new Path("/test"); ? ??fs.mkdirs(path); ? }
?@Test? ? public voidtestCreateFile() throws Exception{ ?//create a file?創建一個文件 ? ?Configuration conf= new Configuration(); ? ?FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf); ? ? Pathpath = new Path("/test/a.txt"); ? ?FSDataOutputStream out = fs.create(path); ? ?out.write("hello hadoop".getBytes()); ? }
??@Test ? ?publicvoid testRenameFile() throws Exception{?//rename afile 重命名 ? ??Configuration conf= new Configuration(); ? ??FileSystem fs =FileSystem.get(URI.create(hdfsUrl),conf); ? ??Path path = new Path("/test/a.txt"); ? ??Path newPath = new Path("/test/b.txt"); ? ??System.out.println(fs.rename(path,newPath)); ??}
??@Test ? ?publicvoid testUploadLocalFile1() throws Exception{?//upload alocal file 上傳文件 ? ??Configuration conf= new Configuration(); ? ??FileSystem fs =FileSystem.get(URI.create(hdfsUrl),conf); ? ??Path src = newPath("/home/hadoop/hadoop-1.2.1/bin/rcc"); ? ??Path dst = new Path("/test"); ? ??fs.copyFromLocalFile(src, dst); ??}
? ?@Test ? ?public void testUploadLocalFile2() throws Exception{?//upload alocal file 上傳文件 ? ?? Configuration conf= new Configuration(); ? ?? FileSystem fs =FileSystem.get(URI.create(hdfsUrl),conf); ? ?? Path src = newPath("/home/hadoop/hadoop-1.2.1/bin/rcc"); ? ?? Path dst = new Path("/test"); ? ?? InputStream in = new BufferedInputStream(newFileInputStream(newFile("/home/hadoop/hadoop-1.2.1/bin/rcc"))); ? ?? FSDataOutputStream out = fs.create(newPath("/test/rcc1")); ? ?? IOUtils.copyBytes(in, out, 4096); ? ?}
@Test ? ??public void testListFIles() throws Exception{//list files under folder 列出文件 ? ?? ? ?? ?Configuration conf= newConfiguration(); ? ?? ? ?? ?FileSystem fs =FileSystem.get(URI.create(hdfsUrl),conf); ? ?? ? ?? ?Path dst = newPath("/test"); ? ?? ? ?? ?FileStatus[] files =fs.listStatus(dst); ? ?? ? ?? ?for(FileStatus file:files){ ? ?? ? ???System.out.println(file.getPath().toString()); ? ??} }
@Test ? ??public void testGetBlockInfo() throws Exception{?//list blockinfo of file?查找文件所在的數據塊 ? ?? ?Configuration conf= newConfiguration(); ? ?? ?FileSystem fs =FileSystem.get(URI.create(hdfsUrl),conf); ? ?? ?Path dst = newPath("/test/rcc"); ? ?? ?FileStatus fileStatus =fs.getFileStatus(dst); ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ??BlockLocation[]blkloc=fs.getFileBlockLocations(fileStatus,0,fileStatus.getLen());//查找文件所在數據塊 ? ?? ?for(BlockLocation loc:blkloc){ ? ?? ? ??for(int i=0;i <loc.getHosts().length;i++) ? ?? ? ?? ??System.out.println(loc.getHosts()[i]); ? ?? ? ?? } ? ?? ? } }

還有很多函數,慢慢使用體會吧。。。
單元測試過程:

Eclipse左側窗口,展開java類的方法,對某個需要進行單元測試的類右鍵,選擇JUnitTest,如圖所示。
先到這里吧。。。
API說明: http://hadoop.apache.org/docs/current/api/

總結

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

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