Azure:实现长时间运行的ETL流程的最佳技术是Function还是WebJob?
Azure:实现长时间运行的ETL流程的最佳技术是Function还是WebJob?
已关闭。这个问题是基于个人观点的。它目前不接受答案。
想要改进这个问题?通过编辑这个帖子以便用事实和引用来回答问题。
改进这个问题
我正在将长时间运行的ETL过程从本地迁移到Azure。
最慢的一个需要多达两个小时才能完成(通过FTP读取CSV文件并将数据写入SQL Azure数据库)。
我读了很多有关这两种技术的优缺点的文章,但从社区得到一些反馈会很好。
我更愿意使用Azure Functions,因为它是“新的”,但似乎Azure Functions不是为支持长时间运行的进程而设计的。
感谢您的反馈!
问候语
假设您不会为2小时读取一个文件,而是阅读许多文件,每个文件可以在5分钟内处理完毕,您可以在消费计划上使用Azure Functions。因此,您应该考虑的第一个条件是是否符合实际情况,或者您是否可以将FTP请求切分成更小的请求。\n\nAzure Functions在内部使用与WebJobs相同的SDK,但您可以获得更快的代码执行时间,并且您不必过多地担心管理它们。这对于一般情况很好,但如果您想要更多的控制,WebJobs可以提供给您。另一方面,对于完全控制,您可以使用Azure VM。\n\n这篇答案为您提供了函数与WebJobs之间的一个很好的概述。\n\n一个想法是,如果您愿意移动您的CSV文件,您可以将Azure Data Lake与U-SQL结合使用。\n\n我不确定您当前的管道如何接收数据,但是您可以使用Azure Functions设置流水线将所有数据存储在数据湖中。由于您使用FTP接收的文件,您不必拥有长时间运行的Azure函数。您将能够在消费计划上运行Azure Functions,每次运行只存储较小量的数据,以便它不会超时。\n\n然后,您可以使用U-SQL和其他数据湖分析服务的各种分析功能准备数据。使用UDOs或Azure数据工厂,您可以将数据加载到SQL Azure数据库中。U-SQL的好处是计算只在使用它时付费,就像在AzureFunctions中一样,因此您可以使用“无服务器”计算来拥有整个流水线。