Azure 数据工厂数据流中的“数据集”和“内联”源之间的区别?
Posted
技术标签:
【中文标题】Azure 数据工厂数据流中的“数据集”和“内联”源之间的区别?【英文标题】:Difference between "Dataset" and "Inline" sources in Azure Data Factory dataflows? 【发布时间】:2021-09-19 22:05:35 【问题描述】:Azure 数据工厂数据流源中的“Dataset”和“Inline”这两种源类型有什么区别?在什么情况下我应该使用一个而不是另一个?
我已经阅读了来自 Microsoft 的 official documentation,但我无法弄清楚:
当一种格式同时支持内联和数据集对象时,两者都有好处。数据集对象是可重用的实体,可用于其他数据流和活动,例如复制。当您使用强化架构时,这些可重用实体特别有用。数据集不基于 Spark。有时,您可能需要覆盖源转换中的某些设置或架构投影。
当您使用灵活的架构、一次性源实例或参数化源时,建议使用内联数据集。如果您的源被大量参数化,则内联数据集允许您不创建“虚拟”对象。内联数据集基于 Spark,它们的属性是数据流的原生属性。
【问题讨论】:
【参考方案1】:数据集是一个额外的抽象级别,在历史上是必需的。数据集肯定有它们的位置,因为它们提供了模式和参数等附加功能,但最初的要求意味着您的存储库中经常会出现许多数据集对象,即使是一次性项目也是如此。
内联允许您访问某些(但不是全部)链接服务资源,而无需创建另一个数据集对象。如果您的操作不需要架构,或者您不需要在多个项目中重用 Dataset 对象,那么内联是一个更简洁的选择。我会提到这一点,因为您引用的文档确实:内联可以使用管道参数,因此解决方案仍然可以是动态的。
至于建议,我会从 Inline 开始,并在情况需要时逐步学习 Datasets。
【讨论】:
感谢 Joel 的回复,它帮助我更好地理解了这些概念。我会添加以下信息(在询问 Azure 用户之后):这是使用数据集的最佳实践,因为我们指定了我们想要的架构。 我不同意这是“最佳实践”,因为模式并不总是能增加价值,在某些情况下可能会增加不必要的复杂性。如果您的解决方案受益于架构,那么请使用架构,但有很多解决方案不需要它。以上是关于Azure 数据工厂数据流中的“数据集”和“内联”源之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章
源数据集中的动态工作表名称:Azure 数据工厂上的(Excel(Blob 存储))。 - 错误:请为您的数据集选择一个工作表
Azure 数据工厂将数据流映射到 CSV 接收器导致零字节文件