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

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

我是指这个链接enter link description here

代码:我可以参考上面的链接获得附加网址。但是,我如何使用这个URL并使用c#追加文件?

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

回答:

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

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;

}

我们还可以使用Azure的Microsoft.Azure.Management.DataLake.Store做到这一点。如何获取应用程序ID和密钥,您可以参考official document。更详细的步骤来获得访问datalake的权限,你可以参考另一个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;

包:

<?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#中使用Web HDFS REST API追加文件? 的全部内容, 来源链接: utcz.com/qa/266490.html

回到顶部