ASP.NET實(shí)現(xiàn)Hadoop增刪改查的示例代碼
本文介紹了ASP.NET實(shí)現(xiàn)Hadoop增刪改查的示例代碼,分享給大家,具體如下:
packages.config
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20505.0" targetFramework="net46" /> <package id="Microsoft.Data.Edm" version="5.2.0" targetFramework="net46" /> <package id="Microsoft.Data.OData" version="5.2.0" targetFramework="net46" /> <package id="Microsoft.Hadoop.WebClient" version="0.12.5126.42915" targetFramework="net46" /> <package id="Microsoft.Net.Http" version="2.0.20505.0" targetFramework="net46" /> <package id="Microsoft.WindowsAzure.ConfigurationManager" version="1.8.0.0" targetFramework="net46" /> <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net46" /> <package id="System.Spatial" version="5.2.0" targetFramework="net46" /> <package id="WindowsAzure.Storage" version="2.0.4.1" targetFramework="net46" /> </packages>
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 List<string> GetDirectories(string path) { var directoryStatus = this.webHDFSClient.GetDirectoryStatus(path).Result; return directoryStatus.Directories.Select(d => d.PathSuffix).ToList(); } public List<string> 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<string>() { "tmp", "user", }; var actual = access.GetDirectories(@"/"); foreach (var item in actual) { Console.WriteLine(item); } } //_傳入根目錄_預(yù)期回傳空集合 public static void GetFilesTest() { // 預(yù)設(shè)根目錄下沒(méi)有檔案 var expected = new List<string>(); var actual = access.GetFiles(@"/"); foreach (var item in actual) { Console.WriteLine(item); } } //_建立zzz目錄_預(yù)期成功_預(yù)期根目錄下有zzz目錄_刪除zzz目錄_預(yù)期成功_預(yù)期根目錄下無(wú)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<string>() { "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ù)期根目錄下無(wú)zzz目錄 // 預(yù)設(shè)根目錄下有兩個(gè)目錄:tmp、user var expectedDeleteDirectory = new List<string>() { "tmp", "user", }; var actualDeleteDirectory = access.GetDirectories(@"/"); foreach (var item in actualDeleteDirectory) { Console.WriteLine(item); } } //_建立Test檔案_預(yù)期根目錄下有Test檔案_刪除Test檔案_預(yù)期成功_預(yù)期根目錄下無(wú)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<string>() { 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ù)期根目錄下無(wú)Test檔案 var expectedDeleteFile = new List<string>(); 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<string>() { 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é)果如圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
理解ASP.NET Core 中間件(Middleware)
這篇文章主要介紹了ASP.NET Core 中間件(Middleware),中間件是一種裝配到應(yīng)用管道以處理請(qǐng)求和響應(yīng)的軟件。文中講解相關(guān)知識(shí)非常詳細(xì),感興趣的朋友可以一起來(lái)看一看2021-09-09asp.net中實(shí)體類對(duì)象賦值到表單的實(shí)現(xiàn)代碼
昨天在網(wǎng)上看到了一個(gè)利用反射表單賦值到實(shí)體類對(duì)象的一個(gè)方法,自己就在加了個(gè)方法,從實(shí)體對(duì)象到表單,覺的很不錯(cuò)非常省事,所以把他寫成了一個(gè)類,供以后使用2010-11-11Asp.net 中mvc 實(shí)現(xiàn)超時(shí)彈窗后跳轉(zhuǎn)功能
這篇文章主要介紹了Asp.net 中mvc 實(shí)現(xiàn)超時(shí)彈窗后跳轉(zhuǎn)功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02asp.net下 jquery jason 高效傳輸數(shù)據(jù)
jquery jason 高效傳輸數(shù)據(jù)轉(zhuǎn)自網(wǎng)上稍有修改2009-03-03ASP.NET Core 2.1 使用Docker運(yùn)行的方法步驟
這篇文章主要介紹了ASP.NET Core 2.1 使用Docker運(yùn)行的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07asp.net 文件路徑之獲得虛擬目錄的網(wǎng)站的根目錄
asp.net下獲取文件路徑常用代碼,獲得虛擬目錄的網(wǎng)站的根目錄2012-10-10ASP.NET實(shí)現(xiàn)的簡(jiǎn)單易用文件上傳類
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)的簡(jiǎn)單易用文件上傳類,本文給出實(shí)現(xiàn)代碼和使用方法示例,需要的朋友可以參考下2015-06-06asp.net子窗體與父窗體交互實(shí)戰(zhàn)分享
用到了兩個(gè)頁(yè)面,其中Default.aspx作為父頁(yè)面,Default2.aspx作為子頁(yè)面被彈出。Default.aspx頁(yè)面上有兩個(gè)TextBox一個(gè)Button通過(guò)測(cè)試我們可以看出我們保留了先輸入到父窗體中的值,又接收了從子窗體傳遞過(guò)來(lái)的值2013-02-02ASP.NET 服務(wù)器路徑和一般資源調(diào)用
ASP.NET 服務(wù)器路徑和一般資源調(diào)用,實(shí)現(xiàn)代碼。2009-08-08淺談ASP.NETCore統(tǒng)一處理404錯(cuò)誤都有哪些方式
本文主要介紹了ASP.NETCore統(tǒng)一處理404錯(cuò)誤都有哪些方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04