Lakehouse 联邦性能建议

本文提供如何提高 Lakehouse 联合查询性能的指导。

设置 JDBC fetchSize 参数

JDBC 提取大小确定每个往返提取的行数。 默认情况下,大多数 JDBC 连接器以原子方式提取数据。 这可能会导致数据量超过可用内存量。

若要避免内存不足错误,请设置 fetchSize 参数。 当设置为非零值时 fetchSize ,连接器会分批读取数据。 每个批处理的最大行数等于值 fetchSize。 Databricks 建议指定一 fetchSize 个大值(例如 100,000),因为如果批处理中的行数太小,则可以延长整个查询执行时间。

此参数允许工作器节点分批读取数据,但不能并行读取数据。

计算要求:

  • 必须在 Databricks Runtime 16.1 或更高版本上使用计算。 SQL 仓库必须是 Pro,并且必须使用 2024.50。
SELECT * FROM catalog.schema.jdbcTable WITH ('fetchSize' 100000)

设置“partition_size_in_mb”参数(Snowflake)

为需要拆分为多个 DataFrame 分区的大型查询结果集设置 partition_size_in_mb 参数。 此选项指定每个 DataFrame 分区的建议未压缩大小。 若要减少分区数,请指定更大的值。 默认值为 100 (MB)。

partition_size_in_mb 用于推荐的尺寸。 分区的实际大小可能较小或更大。

计算要求:

  • 必须在 Databricks Runtime 16.1 或更高版本上使用计算。 SQL 仓库必须是 Pro,并且必须使用 2024.50。
SELECT * FROM catalog.schema.snowflakeTable WITH ('partition_size_in_mb' 1000)