2017-10-17 264 views
1

我正在尝试使用azure数据工厂v2将数据复制到Azure数据存储池。我创建了数据湖商店,并在article here之后创建了一个AD网络应用程序,并确保该帐户可以访问数据湖商店。不过,我收到以下错误,每当我试图运行一个管道,涉及使用数据湖店作为一个水槽的单一副本活动:无法访问ADLS帐户'(accountname)'

活动复制(副本活动名称)失败:无法检测区的链接服务'AzureDataLakeStore':'LS_DataLakeStore',错误为'无法访问ADLS帐户'(数据湖店帐号名称)'。请确保它已被创建。',请明确指定由connectVia属性引用的集成运行时的位置,以避免在需要时检测区域。

我有三重检查帐户名是否正确。我已授予AD应用程序“所有者”对订阅的访问权限,以确保它不是权限问题。我甚至试图创建一个Adf集成运行时,这样我就可以通过错误提示的'connectVia'属性来指定它,所有这些都没有运气。

想法为什么ADF似乎无法看到我的数据湖店?

这里是我的链接业务的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}" 
    } 
    } 
} 

回答

0

感谢您使用Azure的数据工厂,安德鲁。

根据您附加的链接服务有效负载,我认为您使用的是“Azure Data Lake Store”的“服务主体身份验证”,后面是https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-data-lake-store#using-service-principal-authentication的指导,对吧?

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

  1. 转到Azure的门户网站,发现该数据湖Store帐户
  2. 点击“访问控制(IAM)”上的刀片数据湖店
  3. 点击“添加”,在刀片“访问控制(IAM)”
  4. 集“角色”,以“读者”,并指定您创建

在此之后,AAD的应用程序,请尝试重新运行复制活动。

0
  1. 请确保您在linkeservice typeProperties中提供的subscriptionId,resourceGroupName确实是数据湖帐户所属的。

  2. 请确保您有授予至少“读者”的角色给用户/ Serviceprincipal上的数据湖帐户,这里是如何使它:

    一个。转到Azure Portal,找到Data Lake Store帐户

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

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

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

  3. 如果仍然无效,请尝试指定执行位置。

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

    “活动”:
    { “名”: “SqlServertoAzureSearchIndex”, “说明”: “复制活动”, “类型”: “复制”, ... “typeProperties”:{ “源”:{ “类型”:“SqlSource” }, “下沉”:{ “类型”: “AzureSearchIndexSink” }, “executionLocation”: “西美”, }, .. 。 } ]

对于ADFV2,您AzureDataLakeStoreLinkedService指定connectVia链接到CloudIR这样的:

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

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

首先,在您的Azure的数据湖店所在的地区创建一个新的集成运行环境:

https://docs.microsoft.com/en-us/azure/data-factory/create-azure-integration-runtime#create-azure-ir

然后使用参考connectVia属性添加到您的Azure的数据湖将链接服务于新IR:

https://docs.microsoft.com/en-us/azure/data-factory/concepts-datasets-linked-services#linked-service-json