2016-12-26 7 views
0

ADLS 인증에 C#을 사용하고 있으며 삭제, 이름 바꾸기와 같은 파일 작업을 수행하려고합니다. 작동 내가 AdlsError을 얻고있다Azure - ADLS 파일을 삭제하는 동안 ADlsError/WebHDFS 오류가 발생했습니다.

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

, 유형의

처리되지 않은 예외가 인증 코드 아래 사용 및 삭제 'Microsoft.Azure.Management.DataLake.Store.Models.AdlsErrorException' 가 발생 ConsoleApplication1.exe

즉, WebHDFS를 사용하도록 설정해야합니까? ADLS에서 webHDFS를 사용하는 방법. HDInight를 검사했는데 webHDFS가 활성화되었습니다.

알려주십시오.이 문제를 어떻게 해결할 수 있습니까?

답변

1

Google의 파일에 대한 허락이없는 경우 Google은 파일 조작 권한을 갖지 않습니다. 이 경우 내 데모를 참조하십시오. 다음은 내 세부 단계 및 샘플 코드입니다. 그것은 나를 위해 올바르게 작동합니다.

Azure 포털에서 파일에 대한 권한을 할당하십시오.

1.In 우리의 데이터 호수 Store 계정 블레이드, 데이터 탐색기

다음 enter image description here

당신은 푸른 광고 응용 프로그램에 대한 액세스를 제공하고자하는 파일이나 폴더 2.click

, 클릭 클릭 액세스 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

저는 "데이터 레이크 애널리틱스 개발자"역할로서의 역할을 추가했으며 모든 것이 잘 작동합니다 ... 노력해 주셔서 감사합니다. http://stackoverflow.com/questions/41330565/u-sql-error-while-using-reference-assembly?noredirect=1에서 나를 도울 수 있습니까? – Ajay