如何使用Spark 3.3.0中的存储分区连接功能?我已经尝试过,我的查询计划仍然显示昂贵的 ColumnarToRow 和 Exchange 步骤。我的设置如下:
hours(ts), bucket(20, id)
a.id = b.id AND a.ts = b.ts
和 a.id = b.id
org.apache.iceberg:iceberg-spark-runtime-3.3_2.12:0.14.1
spark.sql.sources.v2.bucketing.enabled=true
我通读了所有我能找到的有关存储分区连接功能的文档:
我想知道是否还需要配置其他内容,是否还需要在 Iceberg 中实现某些内容,或者我是否设置了错误的内容。我对这个功能非常兴奋。它确实可以加速我们的一些大型连接。
PR #6371 中的 Iceberg 添加了对存储分区连接 (SPJ) 的支持,并于 2023 年 3 月 20 日在 Apache Iceberg 1.2.0 中发布。
Spark 仅在 3.3 中添加了对 v2 源的 SPJ 支持,因此早期版本无法从此功能中受益。
该支持尚未在 Iceberg 中实现。事实上,当我输入时,工作似乎正在进行中:https://github.com/apache/iceberg/issues/430#issuecomment-1283014666
当有支持 Spark 存储分区连接的 Iceberg 版本时,应该更新此答案。
通过 Spark 在 Apache Iceberg 中提供存储分区连接的 PR 现已合并:https://github.com/apache/iceberg/pull/6371