2017-12-27 23 views
1

私はAzure Data Lakeを使用してファイルをアップロードしていますが、既存のData Lakeテキストファイルのテキストファイルの内容を追加します。 Web HDFS REST API(C#)を使用してテキストファイルのデータを追加するオプションはありますか。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"; 

答えて

2

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; 
} 

enter image description here

我々はまた、それを行うためにアズールMicrosoft.Azure.Management.DataLake.Storeを使用することができます。アプリケーションIDと秘密鍵を取得するには、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> 
+0

休憩アピコードは私のために動作します。ありがとう@トム・サン – Saravanakumar

関連する問題