优化源
对于除 Azure SQL 数据库以外的每个源,建议将“使用当前分区”保留为选定值。 读取其他所有源系统时,数据流会根据数据的大小自动且均匀地对数据进行分区。 大约每 128 MB 数据就会创建一个新分区。 随着数据大小的增加,分区的数量也会增加。
所有自定义分区均在 Spark 读取数据后进行,并且将对数据流性能产生负面影响。 由于数据在读取时会均匀分区,因此除非先了解数据的形状和基数,否则不建议这样做。
备注
读取速度可能会受源系统吞吐量的限制。
Azure SQL 数据库有唯一的分区选项,称为“源”分区。 启用源分区会在源系统上启用并行连接,从而能够增加读取 Azure SQL 数据库的次数。 指定分区数以及数据分区方式。 使用具有高基数的分区列。 你也可以输入与源表的分区方案匹配的查询。
提示
对于源分区,SQL Server 的 I/O 是瓶颈。 添加太多分区可能会导致源数据库饱和。 通常,使用此选项时,最好添加 4-5 个分区。
Azure SQL 源系统上的读取隔离级别会影响性能。 如果选择“读取未提交的内容”,则将提供最快的性能,并可防止任何数据库锁定。 若要了解有关 SQL 隔离级别的更多信息,请参阅了解隔离级别。
可以使用表或 SQL 查询读取 Azure SQL 数据库。 如果要执行 SQL 查询,则必须先完成查询,然后才能开始转换。 SQL 查询对下推操作非常有用,可加快执行速度并减少从 SQL Server 读取的数据量,例如 SELECT、WHERE 和 JOIN 语句。 下推操作时,你将无法在数据进入数据流之前跟踪转换的世系和性能。
使用 Azure Synapse Analytics 时,源选项中有一个名为“启用暂存”的设置。 这允许服务使用 Staging
从 Synapse 进行读取操作,从而可使用最高性能的大容量加载功能(例如,CETAS 和 COPY 命令)大幅提升读取性能。 启用 Staging
需要在数据流活动设置中指定 Azure Blob 存储或 Azure Data Lake Storage Gen2 暂存位置。
尽管数据流支持多种文件类型,但建议使用 Spark 原生 Parquet 格式来实现最佳读写次数。
如果要在一组文件中运行同一数据流,建议读取文件夹、使用通配符路径或读取文件列表。 一次数据流活动运行可以批量处理所有文件。 有关如何配置这些设置的详细信息,可参阅 Azure Blob 存储连接器文档的“源转换”部分。
如果可能,请避免使用 For-Each 活动对一组文件运行数据流。 这会导致 for-each 在每次迭代时启动自己的 Spark 群集,这通常既无必要,又成本昂贵。
ADF 和 Synapse 数据集是工厂和工作区中的共享资源。 但是,读取大量包含带分隔符的文本和 JSON 源的源文件夹和文件时,可以通过在“投影 | 架构”选项对话框中设置选项“用户投影架构”来提升数据流文件发现的性能。 此选项会关闭 ADF 的默认架构自动发现,将极大地提升文件发现的性能。 在设置此选项前,请务必导入投影,以便 ADF 具有用于投影的现有架构。 此选项不适用于架构偏差。
请参阅与性能相关的其他数据流文章: