我正在尝试使用azure数据工厂v2将数据复制到azure数据湖存储接收器。我已经创建了数据湖存储,根据本文创建了一个AD web应用程序,并确保该帐户可以访问数据湖存储。然而,每当我尝试运行涉及使用数据湖存储作为接收器的单个复制活动的管道时,我都会收到以下错误:
活动复制(复制活动名称)失败:无法检测链接服务"AzureDataLakeStore"的区域:"LS_DataLakeStore",错误为"无法访问ADLS帐户">。请确保它已创建。',如果需要,请明确指定connectVia属性引用的集成运行时的位置,以避免区域检测。
我已经三次检查了帐户名称是否正确。我已授予AD应用程序"所有者"对订阅的访问权限,只是为了确保这不是权限问题。我甚至试图创建一个Adf Integration Runtime,这样我就可以按照错误的建议通过"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}"
}
}
}
-
确保您在linkeservice typeProperties中提供的subscriptionId、resourceGroupName确实是数据湖帐户所属的。
-
确保您在数据湖帐户上至少授予用户/Serviceprincipal"阅读器"角色,以下是如何做到的:
a。转到Azure门户,找到Data Lake Store帐户
b。单击Data Lake Store 刀片上的"访问控制(IAM)">
c。点击"访问控制(IAM)"刀片中的"添加">
d。将"角色"设置为"阅读器",并指定您创建的AAD应用程序
-
如果仍然无效,请尝试指定执行位置。
对于ADV1,executionLocation是复制活动"typeProperties"的属性;
"活动":[
{"name":"SqlServertoAzureSearchIndex","description":"复制活动","类型":"复制",。。。"typeProperties":{"来源":{"类型":"SqlSource"},"水槽":{"type":"AzureSearchIndexSink"},"executionLocation":"美国西部",},。。。}]
对于ADV2,请在AzureDataLakeStoreLinkedService上指定connectVia以链接到CloudIR,如下所示:
"integrationRuntimes": [
{
"name": "cloudIR",
"properties": {
"type": "Managed",
"typeProperties": {
"computeProperties": {
"location": "East US 2"
}
}
}
}
]
感谢您使用Azure数据工厂,Andrew。
根据您附加的链接服务负载,我认为您正在对Azure Data Lake Store使用"服务主体身份验证",并遵循此处的指导https://learn.microsoft.com/en-us/azure/data-factory/connector-azure-data-lake-store#using-服务主体身份验证,对吗?
通常,错误应该是由所提供的服务主体没有检测Azure Data Lake Store的区域的权限引起的。请在Azure Data Lake Store的帐户访问控制(IAM)中至少授予"阅读器"角色。详细步骤:
- 转到Azure门户,找到Data Lake Store帐户
- 单击Data Lake Store刀片上的"访问控制(IAM)">
- 单击"访问控制(IAM)"刀片中的"添加">
- 将"角色"设置为"阅读器",并指定您创建的AAD应用程序
之后,请尝试重新运行"复制活动"。
您可能需要告诉ADF在V2中使用特定的Integration Runtime,而不是依赖使用默认IR的自动区域检测。
首先,在Azure Data Lake Store所在的地区创建一个新的Integration Runtime:
https://learn.microsoft.com/en-us/azure/data-factory/create-azure-integration-runtime#create-azure ir
然后使用对新IR:的引用将connectVia属性添加到您的Azure Data Lake Store链接服务
https://learn.microsoft.com/en-us/azure/data-factory/concepts-datasets-linked-services#linked-服务json