【问题标题】:Azure Data Factory(ADF) vs Azure Functions: How to choose?Azure 数据工厂 (ADF) 与 Azure Functions:如何选择?
【发布时间】:2020-05-24 11:02:42
【问题描述】:

目前我们正在使用 Blob 触发器 Azure Functions 将 json 数据移动到 Cosmos DB。我们计划用 Azure 数据工厂 (ADF) 管道替换 Azure Functions。 我是 Azure 数据工厂(ADF)的新手,所以不确定,Azure 数据工厂(ADF)管道是否是更好的选择?

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    虽然我的回答有点晚,但我想补充一点,我不建议用 ADF 替换您当前的设置。原因:

    1. 太贵了。 ADF 的成本远高于 azure 函数。
    2. 自定义逻辑:ADF 不是为执行清理逻辑或任何自定义代码而构建的。它的主要目标是使用其庞大的连接器池从外部系统集成数据
    3. 延迟:由于其作业框架的大量开销,ADF 的延迟要高得多

    【讨论】:

    • 对于使用 Azure 函数可以在一分钟左右完成的简单作业,ADF 确实很复杂,但如果您需要继续获取数小时(有延迟等)ADF 是可以的。然而,它的日志系统仍然很糟糕,无法用简单的代码进行控制(是的,它有功能支持)。实际上最好的成本效益和自定义解决方案是(如果你有时间)启动你自己的小 vm 实例并在其中编写自定义逻辑。
    • 为什么要使用vm,需要自己打补丁,需要自己实现高可用,还要整天跑系统,什么都不用做,一定要提前准备好合适的图片吗?函数不需要所有这些步骤
    • 我实际上支持将 Azure Functions 用于简单的工作,可能措辞不正确。对于非常复杂的 ETL 作业(不是获取和复制,而是在途中进行更多检查和转换),我提到了编写自己的代码。
    【解决方案2】:

    根据您的要求,Azure 数据工厂是您的完美选择。您可以按照此tutorial 配置 Cosmos DB 输出和 Azure Blob 存储输入。

    与 azure 函数相比的优势在于,您无需编写任何自定义代码,除非涉及数据清理,并且 azure 数据工厂是推荐的选项,即使您希望将 azure 函数用于其他目的,您也可以在其中添加它管道。

    【讨论】:

    • 其实我们也在 Azure Function 中实现了一些自定义逻辑,然后保存到 Cosmos DB 中。(即调用一些 API 并绑定额外的数据)..所以我们可以在 Azure Data Factor 中实现这个自定义逻辑( ADF) 管道?
    • 谢谢! @Sajeetharan 为您提供建议。我没有投反对票。
    • 我认为,这不是一个有用的答案,因为它指向了错误的方向。 ADF 不适合提问者描述的这类工作负载。请参阅下面的答案。
    • 在企业 TB 级规模上同时使用数据工厂 ADF 和 Functions 已有几年,我发现数据工厂非常擅长编排数据移动和转换任务。我不使用 ADF 进行复制活动转换之外的转换。我大量使用 Databricks 进行大规模转换。我将函数用于小东西和外部接口。小 t 时起作用,大 T 时起作用 Databricks。ADF 成本很小。如果您不仔细控制成本,功能成本“可能”爆炸式增长。
    【解决方案3】:

    Azure 数据工厂的基本用途是数据摄取。 Azure Functions 是无服务器的(功能即服务),它的最佳用途是用于短期实例。执行数秒的 Azure Functions 的成本要高得多。 Azure Functions 适用于事件驱动的微服务。对于数据摄取,Azure 数据工厂是更好的选择,因为它对海量数据的运行成本将低于 azure 函数。您还可以在 ADF 中集成 Spark 处理管道,以实现更高级的数据摄取管道。

    【讨论】:

      【解决方案4】:

      此外,这取决于您的情况。 Azure 函数是服务器较少的轻量级进程,用于快速访问以响应事件,而不是用于批处理的体积响应。 因此,如果您的要求是在几乎没有信息的情况下快速响应事件,请使用 Azure 函数,或者如果您需要将批处理切换到 ADF。

      【讨论】:

        【解决方案5】:

        费用

        我从here 获取图像。

        让我们计算一下成本:

        if your file is large:
        43:51hour=43.867(h)
        4(DIU)*43.867(h)*0.25($/DIU-H)=43.867$
        43.867/7.514GB= 5.838 ($/GB)
        
        if your file is small(2.497MB), take about 45 seconds:
        4(DIU)*1/60(h)*0.25($/DIU-H)=0.0167$
        2.497MB/1024MB=0.00244013671 GB
        0.0167/0.00244013671= 6.844 ($/GB)
        
        

        规模

        Azure 函数可以运行的最大实例数为 200。

        ADF 可以运行 3,000 个并发外部活动。在我的测试中,只有 1500 个复制活动并行运行。 (这个测试浪费了很多钱。)

        【讨论】:

          猜你喜欢
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 2022-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-24
          • 1970-01-01
          相关资源
          最近更新 更多