我一直在对Azure Data bricks和Azure数据工厂进行一些修补,我想知道当你只是想通过调用这些服务API ( Rest )从一些服务中获取数据,然后使用Rest API将这些数据推送到Service X时,这些数据是否有些过头了。
我已经看到数据工厂可以调用rest API (但似乎不支持Oauth2),但我还没有发现任何关于将数据推送到另一个rest Api的内容(在这一点上,将所有内容整合到Azure DB中并不是很有意义)。
那么,我应该使用数据工厂,还是编写一个python脚本并使用Azure函数调用它会更适合解决这个问题呢?
致以敬意,
发布于 2019-08-12 22:18:01
只有当数据可以非常直接地从一个数据库(或文件)移动到另一个数据库时,我才喜欢使用DataFactory。当您需要更多的逻辑来与应用程序接口交互时,使用DataFactory几乎没有什么额外的价值,因为您已经需要一些计算(比如Azure函数)。
如果您的数据摄取是某种工作流程(例如,在推送到X之前,您需要以特定的顺序使用A、B和C),那么我可以推荐将Durable Functions与函数链接和扇出/扇入模式一起使用。我还有一些video content可以解释这一点。
下面是一个使用函数链接的编排的小伪代码示例:
var id = input.GetInput<string>();
var a = await context.CallActivityAsync<DataA>("CallApiAActivity", id);
var b = await context.CallActivityAsync<DataB>("CallApiBActivity", id);
var c = await context.CallActivityAsync<DataC>("CallApiCActivity", id);
var combined = Builder.CombineABC(a, b, c);
return await context.CallActivityAsync<bool>("PushToApiXActivity", combined);
如果对A、B和C的调用是不相关的,那么我建议您执行扇出/扇入,以便可以并行调用这些函数。
持久函数的好处是编排是有状态的,并对每个活动函数调用的存储执行检查点操作。这将使用CallActivityWithRetryAsync
方法启用自动重试。这在处理不受您控制的服务时特别有用,并使您的解决方案更具弹性。
https://stackoverflow.com/questions/57462093
复制相似问题