我正在尝试创建一个数据工厂,每周一次将大型 blob 文件(源)复制并处理到 python 中的 SQL 数据库(接收器) - 通过逐行读取输入数据集,提取 ID -使用该 ID 在 CosmosDB 上进行查找,以获得重组输出数据集并写入接收器的附加数据。 我有一个 python 脚本,可以在没有 ADF 的情况下一次性执行此操作(即每次读取整个 blob),但现在希望使用 ADF 上的调度功能来自动执行此操作。
有没有一种方法可以在 Python 中创建自定义复制事件,我可以将当前的代码逻辑注入(inject)其中。 Azure 目前仅记录 .Net 自定义事件 ( https://learn.microsoft.com/en-us/azure/data-factory/transform-data-using-dotnet-custom-activity ),该事件不适合我的堆栈。
python azure SDK 目前没有任何有关创建自定义事件的文档。
最佳答案
如果您查看示例,您会发现可以在节点上运行可执行文件。
"typeProperties": {
"command": "helloworld.exe",
"folderPath": "customactv2/helloworld",
"resourceLinkedService": {
"referenceName": "StorageLinkedService",
"type": "LinkedServiceReference"
}
}
再往下看,在 v1 和 v2 之间的差异中,它们显示只是运行“cmd”。
cmd /c echo hello world
因此,如果您可以创建一个可执行文件来启动您的 python 代码,那么它可能会起作用。您还可以使用参数。但是,代码将在 Azure Batch 上运行,Azure Batch 会为你配置 VM。该虚拟机可能不具备您需要的所有依赖项。您必须创建一个“可移植”包才能使其工作。也许是这个post可以帮助您。
更优雅的方法是通过 Web 事件触发 Azure Functions。但这似乎是相当糟糕的东西:https://ourwayoflyf.com/running-python-code-on-azure-functions-app/
关于Azure 数据工厂的 Python 自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48662793/