azure - 为什么 Polybase 对于跨越 10 亿条记录的大型压缩文件来说速度很慢?

标签 azure azure-blob-storage azure-synapse polybase sql-data-warehouse

在查询较大的数据集以将记录从 Blob 存储插入 Azure 数据仓库时,什么会导致 Polybase 性能下降?

例如,数千个压缩 (.gz) CSV 文件,其 header 按每天几个小时进行分区,包含 6 个月的数据。从 SSMS 中的外部表查询这些文件并不完全是最佳选择,而且速度非常慢。

客观上,我将数据加载到 Polybase 中,以便将数据传输到 Azure 数据仓库中。不过,对于大型数据集,Polybase 似乎相当慢。

这里有哪些选项可用于优化 Polybase?等待查询或在每次增量上传到 Blob 存储后加载数据?

最佳答案

在您的场景中,Polybase 必须连接到外部源中的文件,解压缩它们,然后确保它们适合您的外部表定义(架构),然后允许查询定位内容。当您以一次性导入方式处理大量文本文件时,也没有什么可以真正缓存的,因为它每次都处理新内容。简而言之,您的场景计算量很大。

Azure Blob 存储(当前)的最大速度约为 1,250MB/秒,因此,如果您的吞吐量接近该最大值,那么提高性能的最佳方法是升级您的 DWU SQL 数据仓库。在后台,这会将您的工作负载分散到更大的集群(更多服务器)上。 SQL 数据仓库 DWU 可以在几分钟内扩展或缩小。

如果您有巨大的卷并且正在最大化存储,则使用多个存储帐户来分散负载。

其他替代方案包括在上传或暂存过程中减轻 Polybase 的解压缩工作。在 Azure 中执行此操作,数据中心内的网络带宽快如闪电。

您还可以考虑使用 Azure 数据工厂来完成这项工作。 See here了解支持的文件格式。支持 GZip。使用复制事件从 Blob 存储复制到 SQL DW。

另请参阅:

  1. CTAS (创建表作为选择)是将数据从外部表移至 Azure 数据仓库内部存储的最快方法。
  2. Creating statistics如果您要重复查询外部表。 SQL 数据仓库不会像 SQL Server 那样自动创建统计信息,您需要自己创建统计信息。

关于azure - 为什么 Polybase 对于跨越 10 亿条记录的大型压缩文件来说速度很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42337605/

相关文章:

azure - 将许多小文件从 Azure VM 临时磁盘复制到 Azure Blob 时的性能

Azure Blob 存储和容器权限

azure - 如何在客户端地址 IP 空间内的 Azure VPN 网关 P2S 对等点之间分段网络流量?

用于创建服务主体的 Azure 函数

Azure Web 应用程序代码 503 - 服务不可用

sql-server - 如何为azure blob存储中的数据创建外部表

Azure Synapse - 增量数据加载

c# - 如何在 HTTP 触发器 Azure Function 3.x 中获取操作 IS。附图片

azure - 列出 Azure Blob 存储中的文件

sql-server - Azure 突触 : What should I do so that I can access the Power BI report on Power BI service without having to enable the "Public Network Access"?