c# - 如何在 C# 中使用 Web HDFS REST API 附加文件?

标签 c# rest api azure hadoop

我之前使用Azure Data Lake上传文件,但仍想附加现有 Data Lake 文本文件的文本文件内容。是否有任何选项可以在 C# 中使用 Web HDFS REST API 附加文本文件数据?

我引用这个链接enter link description here

代码:我可以引用上面的链接获取附加URL。但是我如何使用这个 URL 并使用 C# 附加文件?

private const string AppendUrl = "https://{0}.azuredatalakestore.net/webhdfs/v1/{1}?&op=APPEND&noredirect=true";

最佳答案

如果您想使用 Rest Api 来做到这一点,我们可以使用以下代码。我用 Postman 测试了它。

private const string AppendUrl = "https://{datalakeName}.azuredatalakestore.net/webhdfs/v1/{filepath}?append=true&op=APPEND&api-version=2016-11-01"
var token = "eyJ0eX.....";
using (var client = new HttpClient())
{
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
     var result = client.GetAsync(url).Result;
     var data = result.Content.ReadAsStringAsync().Result;
}

enter image description here

我们还可以使用 Azure Microsoft.Azure.Management.DataLake.Store要做到这一点。如何获取application id和secretkey可以引用official document 。更详细的获取数据湖访问权限的步骤可以引用另一个SO thread .

var applicationId = "application Id";
var secretKey = "secretKey";
var tenantId = "tenant id";
var adlsAccountName = "datalake account name";
var creds = ApplicationTokenProvider.LoginSilentAsync(tenantId, applicationId, secretKey).Result;
var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds,clientTimeoutInMinutes:60);
var stream = File.OpenRead(@"C:\tom\testtext.txt");
var test = adlsFileSystemClient.FileSystem.AppendWithHttpMessagesAsync(adlsAccountName, "test/abc.txt", stream).Result;

enter image description here

包:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Azure.Management.DataLake.Store" version="2.3.0-preview" targetFramework="net452" />
  <package id="Microsoft.Azure.Management.DataLake.StoreUploader" version="1.0.0-preview" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="3.13.8" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime" version="2.3.9" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.9" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.0-preview" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="9.0.2-beta1" targetFramework="net452" />
</packages>

关于c# - 如何在 C# 中使用 Web HDFS REST API 附加文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47995920/

相关文章:

单例和委托(delegate)中的 C# 异步 SQL

c# - 在 dotnet 中生成 jpg 缩略图

c# - 移位同时保留模式

javascript - 如何使用 Node js 中的 API key 从 REST api 获取数据?

java - 将 REST 和 SOAP 服务合并在同一个类中?

javascript - 我如何从 JSON Google map 获取纬度和经度坐标

c# - 基本 Controller 中的 Asp.net mvc 覆盖 OnException 不断传播到 Application_Error

javascript - 为国家、州/省/地区和城市选择菜单加载数据的 API 或数据库

php - 从私有(private) API 读取数据

javascript - 使用需要 header 并提供内容的 REST 请求下载文件