【问题标题】:Azure - ADlsError / WebHDFS error while deleting ADLS fileAzure - 删除 ADLS 文件时出现 ADlsError / WebHDFS 错误
【发布时间】:2017-05-10 20:43:24
【问题描述】:

我正在使用 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 已启用。

请告诉我,我该如何解决这个问题。

【问题讨论】:

    标签: c# azure azure-storage azure-api-apps


    【解决方案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");
    

    删除文件

    获取文件状态

    【讨论】:

    猜你喜欢
    • 2020-09-15
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2010-10-08
    • 2021-10-26
    相关资源
    最近更新 更多