2016-12-26 1 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 должен быть включен? Как включить webHDFS в ADLS. Я проверил HDInight, webHDFS включен.

Пожалуйста, дайте мне знать, как я могу исправить эту проблему.

ответ

1

Если мы не разрешаем разрешение для нашего файла, у нас не будет разрешения на работу с файлом. Если это так, обратитесь к моей демонстрации. Ниже приведены мои подробные шаги и пример кода. Он работает правильно для меня.

Назначить разрешение для файла на портале Azure.

1.In наши данные Лейк магазин счет лопасть, нажмите Проводник данных

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.Check файл получил разрешение 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

Я добавил свою роль в качестве «Data Lake Analytics Developer» роль, и все работает нормально ... Спасибо Тому за ваши усилия. Вы можете помочь мне на http://stackoverflow.com/questions/41330565/u-sql-error-while-using-reference-assembly?noredirect1 – Ajay

Смежные вопросы