【问题标题】:Connection to Azure data lake Gen 2 from azure function从 azure 函数连接到 Azure 数据湖 Gen 2
【发布时间】:2019-04-17 11:28:06
【问题描述】:

我正在尝试从 Azure 函数连接到 Azure Data Lake Storage Gen2,以导入一些 XML 文件并将它们转换为 JSON。但我的代码不起作用:

var creds = ApplicationTokenProvider.LoginSilentAsync(tenantId, applicationId, secretKey).Result;  
var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds);
var result = adlsFileSystemClient.FileSystem.Open(adlsAccountName, "/Test/xml.xml");

这会返回一个错误:The remote name could not be resolved + "azuredatalakestore.net" 而实际上 DNS 后缀应该不同。

【问题讨论】:

标签: c# .net azure azure-functions azure-data-lake


【解决方案1】:

目前,ADLS Gen2 不支持 SDK,但您可以使用 ADLS Gen2 rest api 代替,进行一些创建/读取/删除操作。

例如,您可以使用 sas 令牌身份验证编写如下代码(或者您也可以使用shared key 身份验证):

            string sasToken = "?sv=2018-03-28&ss=b&srt=sco&sp=rwdl&st=2019-04-15T08%3A07%3A49Z&se=2019-04-16T08%3A07%3A49Z&sig=xxxx";
            string url = "https://xxxx.dfs.core.windows.net/myfilesys1/app.JPG" + sasToken;
            var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));

            //you can specify the Method as per your operation as per the api doc
            req.Method = "HEAD"; 
            var res = (HttpWebResponse)req.GetResponse();

            //your other code

【讨论】:

    【解决方案2】:

    取自Known issues with Azure Data Lake Storage Gen2

    SDK 支持 Data Lake Storage Gen2 帐户
    没有可用于 Data Lake Storage Gen2 帐户的 SDK。

    【讨论】:

      【解决方案3】:

      SDK 现已推出:https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-dotnet

      我的例子:

      StorageSharedKeyCredential credential = new StorageSharedKeyCredential(_configuration["AccountName"], _configuration["AccountKey"]);
      
      serviceClient = new DataLakeServiceClient(new Uri(_configuration["DFSURL"]), credential);
      
      usage_container = serviceClient.GetFileSystemClient(_configuration["BlobContainer"]);
      
      
      DataLakeDirectoryClient directoryClient = usage_container.GetDirectoryClient(country);
      directoryClient.CreateFileAsync(xmlFileName, headers);
      

      【讨论】:

        猜你喜欢
        • 2022-08-16
        • 2020-01-13
        • 1970-01-01
        • 2018-11-21
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 2018-11-13
        • 1970-01-01
        相关资源
        最近更新 更多