Azure data factory 无法访问ADLS帐户';(账户名称)和#x27;

Azure data factory 无法访问ADLS帐户';(账户名称)和#x27;,azure-data-factory,Azure Data Factory,我正在尝试使用azure data factory v2将数据复制到azure data lake存储接收器。我已经创建了data lake store,在之后创建了一个广告web应用程序,并确保该帐户可以访问data lake store。但是,每当我尝试运行涉及将data lake存储用作接收器的单个复制活动的管道时,我都会收到以下错误: 活动复制(复制活动名称)失败:未能检测链接服务“AzureDataLakeStore”的区域:“LS_DataLakeStore”出现错误“无法访问ADL

我正在尝试使用azure data factory v2将数据复制到azure data lake存储接收器。我已经创建了data lake store,在之后创建了一个广告web应用程序,并确保该帐户可以访问data lake store。但是,每当我尝试运行涉及将data lake存储用作接收器的单个复制活动的管道时,我都会收到以下错误:

活动复制(复制活动名称)失败:未能检测链接服务“AzureDataLakeStore”的区域:“LS_DataLakeStore”出现错误“无法访问ADLS帐户”(data lake store帐户名称)”。请确保它已创建。“,请明确指定connectVia属性引用的集成运行时的位置,以避免区域检测(如果需要)

我已三次检查帐户名是否正确。我已授予广告应用程序“所有者”对订阅的访问权,以确保这不是权限问题。我甚至尝试创建一个Adf集成运行时,这样我就可以通过错误建议的“connectVia”属性来指定它,而这一切都是徒劳的

关于ADF为什么看不到我的data lake store的想法

以下是我的链接服务json:

{
  "name": "LS_DataLakeStore",
  "properties": {
    "type": "AzureDataLakeStore",
    "typeProperties": {
      "dataLakeStoreUri": "adl://{my adls account name}.azuredatalakestore.net/",
      "servicePrincipalId": "{the application id of the AD account I created}",
      "servicePrincipalKey": {
        "type": "SecureString",
        "value": "{the value of the key for the AD account I generated}"
      },
      "tenant": "{my tenant id (I also tried using the tenant domain name here as well)}",
      "subscriptionId": "{the subscription id in which the ADF and ADLS are located}",
      "resourceGroupName": "{the resource group name in which the ADF and ADLS are located}"
    }
  }
}

感谢您使用Azure数据工厂,Andrew

根据您附加的链接服务负载,我认为您正在为Azure Data Lake存储使用“服务主体身份验证”,并遵循此处的指导,对吗

通常,错误应该是由于提供的服务主体没有检测Azure Data Lake存储区域的权限造成的。请在Azure Data Lake存储上的帐户访问控制(IAM)中至少授予“阅读器”角色。详细步骤:

  • 转到Azure门户,找到Data Lake存储帐户
  • 单击Data Lake存储刀片上的“访问控制(IAM)”
  • 单击“访问控制(IAM)”刀片中的“添加”
  • 将“角色”设置为“阅读器”,并指定您创建的AAD应用程序
  • 之后,请尝试重新运行复制活动

  • 确保在linkeservice typeProperties中提供的subscriptionId、resourceGroupName确实是data lake帐户所属的

  • 确保您已向data lake帐户上的用户/Serviceprincipal授予至少一个“Reader”角色,以下是如何授予该角色:

    a。转到Azure门户,找到Data Lake存储帐户

    b。单击Data Lake存储刀片上的“访问控制(IAM)”

    c。单击“访问控制(IAM)”刀片中的“添加”

    d。将“角色”设置为“阅读器”,并指定您创建的AAD应用程序

  • 如果仍然不起作用,请尝试指定执行位置

    对于ADFV1,executionLocation是复制活动“typeProperties”的属性

    “活动”:[
    { “名称”:“SqlServertoAzureSearchIndex”, “description”:“复制活动”, “类型”:“复制”, ... “类型属性”:{ “来源”:{ “类型”:“SqlSource” }, “水槽”:{ “类型”:“AzureSearchIndexSink” }, “行刑地点”:“美国西部”, }, ... } ]

  • 对于ADFV2,在AzureDataLakeStoreLinkedService上指定一个connectVia以链接到CloudIR,如下所示:

    "integrationRuntimes": [
            {
                "name": "cloudIR",
                "properties": {
                    "type": "Managed",
                    "typeProperties": {
                        "computeProperties": {
                            "location": "East US 2"
                        }
                    }
                }
            }
        ] 
    

    您可能需要告诉ADF在V2中使用特定的集成运行时,而不是依赖使用默认IR的自动区域检测

    首先,在Azure Data Lake商店所在的区域创建一个新的集成运行时:

    然后使用对新IR的引用将connectVia属性添加到Azure Data Lake Store链接服务:


    2。这是一个重要的错误。我有一个确切的错误,虽然我所有的身份验证设置和链接服务设置都很好,但这是由于无法读取元数据造成的。