我正在使用C#进行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。
请告诉我,如何解决这个问题。
答案 0 :(得分:1)
如果我们没有为我们的文件授予权限,那么我们将无权操作该文件。如果是这种情况,请参阅我的演示。以下是我的详细步骤和示例代码。它适用于我。
为Azure门户上的文件分配权限。
1.在我们的Data Lake Store帐户边栏中,单击“数据资源管理器”
2.单击要为其提供Azure AD应用程序访问权限的文件或文件夹,然后单击“访问”
3.添加"分配权限" ,在“选择用户”或“组刀片”中,查找先前创建的Azure Active Directory应用程序。
4.选择适当的权限
5.检查文件是否已获得许可
演示代码:
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");
删除档案
获取档案状态