如何在spark/iceberg中启用存储分区连接?

问题描述 投票:0回答:3

如何使用Spark 3.3.0中的存储分区连接功能?我已经尝试过,我的查询计划仍然显示昂贵的 ColumnarToRow 和 Exchange 步骤。我的设置如下:

  • 连接两个 Iceberg 表,两个表都在
    hours(ts), bucket(20, id)
  • 上分区
  • a.id = b.id AND a.ts = b.ts
    a.id = b.id
  • 上尝试加入
  • 表很大,使用了 100+ 个分区,需要连接 100+ GB 的数据
  • 火花:3.3.0
  • 冰山:
    org.apache.iceberg:iceberg-spark-runtime-3.3_2.12:0.14.1
  • 使用
    spark.sql.sources.v2.bucketing.enabled=true
  • 设置我的 Spark 会话配置

我通读了所有我能找到的有关存储分区连接功能的文档:

我想知道是否还需要配置其他内容,是否还需要在 Iceberg 中实现某些内容,或者我是否设置了错误的内容。我对这个功能非常兴奋。它确实可以加速我们的一些大型连接。

apache-spark apache-spark-sql apache-iceberg
3个回答
4
投票

PR #6371 中的 Iceberg 添加了对存储分区连接 (SPJ) 的支持,并于 2023 年 3 月 20 日在 Apache Iceberg 1.2.0 中发布。

Spark 仅在 3.3 中添加了对 v2 源的 SPJ 支持,因此早期版本无法从此功能中受益。


0
投票

该支持尚未在 Iceberg 中实现。事实上,当我输入时,工作似乎正在进行中:https://github.com/apache/iceberg/issues/430#issuecomment-1283014666

当有支持 Spark 存储分区连接的 Iceberg 版本时,应该更新此答案。


0
投票

通过 Spark 在 Apache Iceberg 中提供存储分区连接的 PR 现已合并:https://github.com/apache/iceberg/pull/6371

© www.soinside.com 2019 - 2024. All rights reserved.