Azure:实现长期运行的ETL过程的最佳技术是什么:功能还是WebJob?

时间:2017-05-05 16:10:30

标签: c# azure azure-webjobs azure-functions

我正在将长期运行的ETL进程从内部迁移到Azure。 最慢的一个需要2个小时才能完成(通过FTP读取CSV文件并将数据写入SQL Azure数据库)。 我在网上阅读了很多关于这两种技术的优缺点的文章,但从社区获得一些反馈会很棒。 我更喜欢使用Azure功能,因为"它是新的"但似乎Azure功能并非旨在支持长时间运行的进程。

感谢您的反馈! 此致

1 个答案:

答案 0 :(得分:1)

假设您在2小时内没有读取1个文件,而是读取了许多文件,每个文件都可以在5分钟内处理,您可以在消费计划中使用Azure功能。因此,您应该考虑的第一个标准是,这是否属实,或者您是否可以将您的FTP请求切片更多,但更小。

Azure功能使用与WebJobs相同的SDK,但您可以更快地运行代码,并且不必担心管理它们。这对于一般情况来说是好的,但是如果你想要更多控制,WebJobs会为你提供。另一方面,为了完全控制,您可以使用Azure VM。 This answer为您提供了一个很好的概述功能与WebJobs。

一个想法是,如果您愿意移动CSV文件,可以将Azure Data Lake与U-SQL结合使用。

我不确定当前管道如何接收数据,但您可以使用Azure Functions设置管道以将所有数据存储在Data Lake中。由于您存储使用FTP接收的文件,因此您不必长时间运行Azure功能。您可以在消耗计划上运行Azure Function,每次运行时只在Data Lake中存储少量数据,因此不会超时。

然后,您可以使用U-SQL和其他Data Lake分析服务的各种分析功能来准备数据。使用UDOs或Azure数据工厂,您可以将数据加载到SQL Azure数据库中。 U-SQL的好处在于,只有在使用它时才支付计算费用,例如在Azure Functions中,因此您可以使用“无服务器”计算来获得整个管道。