一直在研究使用 Azure Data Lake Analytics 功能来尝试操作我存储在 Azure Blob 存储中的一些 Gzip 处理的 xml 数据,但我遇到了一个有趣的问题。本质上,当在本地使用 U-SQL 处理 500 个 xml 文件时,处理时间非常快,在本地使用 1 个 AU 大约需要 40 秒(这似乎是极限)。然而,当我们使用 5 个 AU 从 Azure 中运行相同的功能时,处理需要 17 分钟以上。
我们最终希望将其扩展到约 20,000 个文件甚至更多,但已减少了文件集以尝试测量速度。
每个文件包含 50 个 xml 对象的集合(子元素中包含不同数量的详细信息),这些文件在经过 Gzip 压缩后大约为 1 MB,未经 Gzip 压缩时大小在 5MB 到 10MB 之间。 99% 的处理时间都花在 u-sql 脚本的 EXTRACT 部分。
尝试过的事情,
在处理之前解压缩文件,这与压缩版本花费的时间大致相同,当然远不及我在本地看到的 40 秒。
将数据从 Blob 存储移动到 Azure Data Lake 存储,花费了完全相同的时间长度。
暂时从文件中删除了大约一半的数据并重新运行,令人惊讶的是,这也没有花费超过一分钟的时间。
添加更多 AU 来增加处理时间,这非常有效,但由于会产生成本,这不是一个长期解决方案。
在我看来,从 Azure Blob 存储/Azure Data Lake 获取数据时似乎存在主要瓶颈。我是否遗漏了一些明显的东西?
附:如果您需要更多信息,请告诉我。
Thanks,
Nick.
参见幻灯片 31https://www.slideshare.net/MichaelRys/best-practices-and-performance-tuning-of-usql-in-azure-data-lake-sql-konferenz-2018 https://www.slideshare.net/MichaelRys/best-practices-and-performance-tuning-of-usql-in-azure-data-lake-sql-konferenz-2018。有预览选项
SET @@FeaturePreviews="InputFileGrouping:on";
它将小文件分组到有限的顶点中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)