2

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

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

客观地说,我将数据加载到 Polybase 以便将数据传输到 Azure 数据仓库。除了大型数据集,Polybase 似乎很慢。

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

4

1 回答 1

1

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

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

如果您有大量存储空间并且正在最大化存储空间,请使用多个存储帐户来分散负载。

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

您还可以考虑使用 Azure 数据工厂来完成这项工作。有关支持的文件格式,请参见此处。支持 GZip。使用复制活动从 Blob 存储复制到 SQL DW。

另请关注:

  1. CTAS(以选择方式创建表),将数据从外部表移动到 Azure 数据仓库中的内部存储的最快方式。
  2. 如果要重复查询外部表,请为它们创建统计信息。SQL 数据仓库不会像 SQL Server 那样自动创建统计信息,您需要自己执行此操作。
于 2017-02-20T12:01:37.607 回答