小編給大家分享一下ASP.NET實(shí)現(xiàn)Hadoop增刪改查的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
宜秀網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。具體如下:
packages.config
HDFSAccess.cs
using Microsoft.Hadoop.WebHDFS; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; namespace Physical { public sealed class HDFSAccess { private readonly WebHDFSClient webHDFSClient; public HDFSAccess(string uriString, string userName) { this.webHDFSClient = new WebHDFSClient(new Uri(uriString), userName); } public ListGetDirectories(string path) { var directoryStatus = this.webHDFSClient.GetDirectoryStatus(path).Result; return directoryStatus.Directories.Select(d => d.PathSuffix).ToList(); } public List GetFiles(string path) { var directoryStatus = this.webHDFSClient.GetDirectoryStatus(path).Result; return directoryStatus.Files.Select(d => d.PathSuffix).ToList(); } public bool CreateDirectory(string path) { // 傳入路徑不包含根目錄時(shí),預(yù)設(shè)會(huì)在根目錄「/」底下 return this.webHDFSClient.CreateDirectory(path).Result; } public bool DeleteDirectory(string path) { // 傳入路徑不包含根目錄時(shí),預(yù)設(shè)會(huì)在根目錄「/」底下 return this.webHDFSClient.DeleteDirectory(path).Result; } public string CreateFile(string localFile, string remotePath) { // 傳入遠(yuǎn)端路徑不包含根目錄時(shí),預(yù)設(shè)會(huì)在根目錄「/」底下 return this.webHDFSClient.CreateFile(localFile, remotePath).Result; } public bool DeleteFile(string path) { // 傳入路徑不包含根目錄時(shí),預(yù)設(shè)會(huì)在根目錄「/」底下 return this.webHDFSClient.DeleteDirectory(path).Result; } public HttpResponseMessage OpenFile(string path) { // 傳入路徑不包含根目錄時(shí),預(yù)設(shè)會(huì)在根目錄「/」底下 return this.webHDFSClient.OpenFile(path).Result; } } }
Program.cs
using Physical; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyTest { class Program { // HDFS cluster 客戶端進(jìn)入端點(diǎn)設(shè)定于 主機(jī)上 // 預(yù)設(shè)端點(diǎn):http://[主機(jī)名稱]:50070 // 預(yù)設(shè)帳號(hào):Wu private static HDFSAccess access = new HDFSAccess(@"http://127.0.0.1:50070", "Wu"); static void Main(string[] args) { GetDirectoriesTest(); Console.WriteLine("----------------------------------------------"); GetFilesTest(); Console.WriteLine("----------------------------------------------"); DirectoryTest(); Console.WriteLine("----------------------------------------------"); FileTest(); Console.WriteLine("----------------------------------------------"); OpenFileTest(); Console.ReadKey(); } public void TestCleanup() { //取得根目錄資料夾 var directories = access.GetDirectories(@"/"); // 移除預(yù)設(shè)目錄:tmp、user 外的目錄 foreach (var directory in directories) { if ("tmp".Equals(directory) || "user".Equals(directory)) { continue; } else { access.DeleteDirectory(directory); } } // 取得根目錄檔案 var files = access.GetFiles(@"/"); // 移除所有檔案 foreach (var file in files) { access.DeleteFile(file); } // 移除 OpenFile 轉(zhuǎn)存檔案 File.Delete(Path.Combine(Directory.GetCurrentDirectory(), "Test.jpg")); } //_傳入根目錄_預(yù)期回傳預(yù)設(shè)目錄 public static void GetDirectoriesTest() { // 預(yù)設(shè)根目錄下有兩個(gè)目錄:tmp、user var expected = new List() { "tmp", "user", }; var actual = access.GetDirectories(@"/"); foreach (var item in actual) { Console.WriteLine(item); } } //_傳入根目錄_預(yù)期回傳空集合 public static void GetFilesTest() { // 預(yù)設(shè)根目錄下沒有檔案 var expected = new List (); var actual = access.GetFiles(@"/"); foreach (var item in actual) { Console.WriteLine(item); } } //_建立zzz目錄_預(yù)期成功_預(yù)期根目錄下有zzz目錄_刪除zzz目錄_預(yù)期成功_預(yù)期根目錄下無zzz目錄 public static void DirectoryTest() { var directoryName = "zzz"; // 建立zzz目錄 var boolCreateDirectory = access.CreateDirectory(directoryName); Console.WriteLine("建立zzz目錄_預(yù)期成功:"+boolCreateDirectory); // 建立zzz目錄_預(yù)期成功_預(yù)期根目錄下有zzz目錄 // 預(yù)設(shè)根目錄下有三個(gè)目錄:tmp、user、zzz var expectedCreateDirectory = new List () { "tmp", "user", directoryName, }; var actualCreateDirectory = access.GetDirectories(@"/"); foreach (var item in actualCreateDirectory) { Console.WriteLine(item); } Console.WriteLine("********************************************"); // 刪除zzz目錄 var boolDeleteDirectory = access.DeleteDirectory(directoryName); Console.WriteLine("刪除zzz目錄_預(yù)期成功:" + boolDeleteDirectory); // 刪除zzz目錄_預(yù)期成功_預(yù)期根目錄下無zzz目錄 // 預(yù)設(shè)根目錄下有兩個(gè)目錄:tmp、user var expectedDeleteDirectory = new List () { "tmp", "user", }; var actualDeleteDirectory = access.GetDirectories(@"/"); foreach (var item in actualDeleteDirectory) { Console.WriteLine(item); } } //_建立Test檔案_預(yù)期根目錄下有Test檔案_刪除Test檔案_預(yù)期成功_預(yù)期根目錄下無Test檔案 public static void FileTest() { var localFile = Path.Combine(Directory.GetCurrentDirectory(), "TestFolder", "Test.jpg"); var remotePath = "Test.jpg"; // 建立Test檔案 var boolCreateFile = access.CreateFile(localFile, remotePath); // 建立Test檔案_預(yù)期根目錄下有Test檔案 var expectedCreateFile = new List () { remotePath, }; var actualCreateFile = access.GetFiles(@"/"); foreach (var item in actualCreateFile) { Console.WriteLine(item); } Console.WriteLine("********************************************"); // 刪除Test檔案 var boolDeleteFile = access.DeleteDirectory(remotePath); Console.WriteLine("刪除Test檔案_預(yù)期成功:"+boolDeleteFile); // 刪除Test檔案_預(yù)期成功_預(yù)期根目錄下無Test檔案 var expectedDeleteFile = new List (); var actualDeleteFile = access.GetFiles(@"/"); foreach (var item in actualDeleteFile) { Console.WriteLine(item); } } //_建立Test檔案_預(yù)期根目錄下有Test檔案_取得Test檔案_預(yù)期成功_預(yù)期回傳Test檔案Stream并轉(zhuǎn)存成功 public static void OpenFileTest() { var localFile = Path.Combine(Directory.GetCurrentDirectory(), "TestFolder", "Test.jpg"); var remotePath = "Test.jpg"; var saveFile = Path.Combine(Directory.GetCurrentDirectory(), "Test.jpg"); Console.WriteLine("saveFile:" + saveFile); Console.WriteLine("********************************************"); // 建立Test檔案 var boolCreateFile = access.CreateFile(localFile, remotePath); // 建立Test檔案_預(yù)期根目錄下有Test檔案 var expectedCreateFile = new List () { remotePath, }; var actualCreateFile = access.GetFiles(@"/"); foreach (var item in actualCreateFile) { Console.WriteLine(item); } Console.WriteLine("********************************************"); // 取得Test檔案 var response = access.OpenFile(remotePath); // 取得Test檔案_預(yù)期成功 response.EnsureSuccessStatusCode(); // 取得Test檔案_預(yù)期成功_預(yù)期回傳Test檔案Stream并轉(zhuǎn)存成功 using (var fs = File.Create(saveFile)) { response.Content.CopyToAsync(fs).Wait(); } Console.WriteLine(File.Exists(saveFile)); } } }
運(yùn)行結(jié)果如圖:
看完了這篇文章,相信你對ASP.NET實(shí)現(xiàn)Hadoop增刪改查的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。