2017-03-01 60 views
1

我正在嘗試使用Azure SDK在Visual Studio中使用自定義ADF活動將數據寫入ADLS。我創建的管道將被部署到現有的ADF中,該ADF已經定義了ADLS和批量鏈接服務。 我的問題是這樣的:在自定義活動方法中,如何使用現有的ADLS鏈接服務來寫入數據?Azure ADF自定義活動與現有的ADLS鏈接服務

此問題與此類似:ADF - C# Custom Activity但我不認爲我可以簡單地提起連接字符串,因爲鏈接服務正在使用我的SPN,而作爲開發人員,我不允許知道SPN密鑰。

以下是鏈接服務。

{ 
    "name": "AzureDataLakeStoreLinkedService", 
    "properties": { 
     "hubName": "****-d-****-adf_hub", 
     "type": "AzureDataLakeStore", 
     "typeProperties": { 
      "dataLakeStoreUri": "adl://***************.azuredatalakestore.net/", 
      "servicePrincipalId": "*****-**-****-****-************", 
      "servicePrincipalKey": "**********", 
      "tenant": "********.com" 
     } 
    } 
} 

在自定義活動我得到鏈接業務的保持:

var output = activity.Outputs[0]; 
var inputLinkedService = linkedServices.First(linkedService => linkedService.Name == _ADLSLinkedServiceName).Properties.TypeProperties as AzureDataLakeStoreLinkedService; 

- 現在怎麼辦?

回答

1

您只能使用上述方法調用獲取文件路徑和鏈接服務帳戶名稱等信息。

您在這裏遇到的問題是ADF自定義活動作爲單獨的應用程序在Azure批計算服務中運行。它不理解已經在ADF中設置的鏈接服務認證(會話令牌),並且您將無法在C#中找到它。

解決方案是將自定義活動作爲Azure應用程序在Azure Active Directory域的上下文中註冊!....是的,認真!

完成後,您可以授予應用程序訪問權限,以便從數據存儲區讀取/寫入數據。

看看我的博客。我寫了一篇關於正是這個帖子:

https://www.purplefrogsystems.com/paul/2016/12/azure-data-lake-authentication-from-azure-data-factory/

警告:PowerShell命令已經被superceeded,因爲現在你可以實際登記在門戶刀片的應用。

+0

謝謝Paul,理解。我認爲我應該對解決方案感到驚訝,但是我越用ADF就越不驚訝。 –