已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
2个月前关闭。
Improve this question
我需要使用ADF管道每天将多达50万条记录写入Azure SQL DB。我有一些简单的计算,作为可以在SQL存储过程活动中执行的数据转换的一部分。我也观察到了常用的数据库笔记本,特别是。这是因为可扩展性的好处。但是在转换后将文件放置在另一个位置、管理身份验证等开销活动。我想避免任何过度工程除非绝对需要。我已经测试了SQL Stored Proc,它在大约50k的记录下工作得很好(还没有在更大的卷上测试过)。
但我还是想知道这两种选择之间的一般建议,特别是。来自经验丰富的Azure或数据工程师。谢谢
3条答案
按热度按时间8ehkhllq1#
我不确定是否有足够的信息来提供可靠的建议。数据的来源是什么?为什么ADF是解决方案的一部分?这是每天一次的50万行还是一个恒定的流?您是否加载到一个Staging表,然后使用存储过程将数据移动和转换到另一个表?
以下是一些想法:
1.如果数据操作是SQL到SQL [意味着源和接收器的SQL示例相同],则使用存储过程。这可以让你保持接近金属,并将执行最好的。一个例外是,如果计算负载真的很复杂,但这里似乎不是这样。
1.一般来说,从ADF调用Data Brick的唯一原因是您已经拥有该专业知识并且已经存在支持它的资源。
由于ADF是故事的一部分,因此在两个场景之间存在一个中间地带-数据流。数据流是对数据块的低代码抽象。它们是飞行中数据转换的理想选择,在高负载下表现出色。您无需创作或部署笔记本,也无需管理Data Bricks配置。他们是ADF管道中的一等公民。
kkih6yb82#
作为一名经验丰富的(前)DBA、数据工程师和数据架构师,我看不出Databricks在这种情况下会增加什么。您可能需要扩展的这部分架构是
INSERTs
的目标,即Azure SQL数据库,它非常容易通过门户或REST API手动扩展,如果需要的话。如果需要调优插入,请考虑诸如装入堆和分区切换之类的技术。在架构中添加额外组件然后通过数据的开销必须是值得的,再加上在数据库运行的同时旋转Spark集群的额外成本。
Databricks是一个非常好的工具,有很多很好的用例,例如高级数据转换(即你不能用SQL做的事情),机器学习,流等等。看看这个免费的资源,了解一些想法:
https://databricks.com/p/ebook/the-big-book-of-data-science-use-cases
f1tvaqid3#
尽管这个问题是在三年前提出的,但我想分享我的个人经验,因为我的项目目前正处于从存储过程到数据库的转变中。
这里的用例是每次运行处理约150万个条目,并在将其上传到SQL Server之前进行一些最小的转换。
决策驱动因素是:
我认为,如果不使用Databricks,我们也可以通过一些努力来实现这一切,但是那里的工具确实有助于建立一个维护和更高质量的ETL管道。
此外,它还将通过准备好新的基础设施,使项目能够用于未来的业务案例。
实际上,在这个项目中,我们觉得迁移到Databricks的开销是值得的,因为它有一个更透明,高质量和可维护的解决方案。