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

时间:2017-02-20 06:11:54

标签: azure azure-storage-blobs azure-sqldw polybase sql-data-warehouse

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

例如,几千个压缩(.gz)CSV文件,其中包含6个月数据每天几小时的标题。从SSMS中的外部表查询这些文件并不是非常优化,而且速度非常慢。

客观地说,我将数据加载到Polybase中以便将数据传输到Azure数据仓库。除了大型数据集外,Polybase相当慢。

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

1 个答案:

答案 0 :(得分:1)

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

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

如果您的存储量很大并且存储量最大,那么请使用多个存储帐户来分散负载。

其他替代方法包括将解压缩工作的Polybase作为上传或暂存过程的一部分来解除。从Azure中执行此操作,其中数据中心内的网络带宽非常快。

您还可以考虑使用Azure Data Factory来完成工作。 See here表示支持的文件格式。支持GZip。使用“复制活动”从Blob存储复制到SQL DW。

另请参阅:

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