2016-12-26 13 views
0

我正在使用C#进行ADLS身份验证,并希望做一些文件操作,如删除,重命名。用下面的代码进行验证和删除操作Azure - ADlsError/WebHDFS错误,同时删除ADLS文件

var context = new AuthenticationContext("https://login.windows.net/" + tenantId); 
ClientCredential clientCredential = new ClientCredential(appId, secretKey); 
var tokenResponse = context.AcquireTokenAsync("https://management.azure.com/", clientCredential).Result; 
var accessToken = tokenResponse.AccessToken; 
using (var client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken); 
    client.BaseAddress = new Uri("https://management.azure.com/"); 
} 

ServiceClientCredentials creds = new TokenCredentials(tokenResponse.AccessToken);// tokenResponse.IdToken, tokenResponse.AccessTokenType); 

DataLakeStoreFileSystemManagementClient _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds); 

_adlsFileSystemClient.FileSystem.Delete(_adlsAccountName, FilenameWPath); 

我越来越AdlsError,

类型的未处理的异常 “Microsoft.Azure.Management.DataLake.Store.Models.AdlsErrorException” 发生在ConsoleApplication1.exe

这意味着WebHDFS应该启用?如何在ADLS上启用webHDFS。我检查了HDInight,启用了webHDFS。

请让我知道,我该如何解决这个问题。

回答

1

如果我们不对我们的文件进行许可,那么我们将无权操作该文件。如果是这种情况,请参考我的演示。以下是我的详细步骤和示例代码。它适用于我。

在Azure门户上为文件分配权限。

1.In我们的数据湖Store帐户刀片,单击数据浏览器

enter image description here

2.click您要提供访问Azure的AD应用程序的文件或文件夹,然后单击访问 enter image description here

3.在选择用户或组刀片中添加“分配权限”,查找先前创建的Azure Active Directory应用程序。 enter image description here 4.select适当的权限 enter image description here
5.检查该文件已得到许可 enter image description here

演示代码:

var applicationId = "Application Id"; 
var secretKey = "Secret Key"; 
var tenantId = "Tenant Id"; 
var adlsAccountName = "ADLS Account Name"; 
var creds = ApplicationTokenProvider.LoginSilentAsync(tenantId, applicationId, secretKey).Result; 
var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds); 
var status = adlsFileSystemClient.FileSystem.GetFileStatus(adlsAccountName, "/mytempdir/myinputfile.txt"); 
var deletResult = adlsFileSystemClient.FileSystem.Delete(adlsAccountName, "/mytempdir/myinputfile.txt"); 

删除文件

enter image description here

获取文件状态

enter image description here

+0

我说我为“数据分析湖开发者”的角色,一切角色是工作的罚款...感谢汤姆你的努力。你能帮助我http://stackoverflow.com/questions/41330565/u-sql-error-while-using-reference-assembly?noredirect=1 – Ajay