awslabs / awslabs/python-deequ
Proposal: add Spark 4.1 support
まだ誰も着手していません。
- 主要言語
- Jupyter Notebook
- スター
- 826
- フォーク
- 158
- 平均マージ
- 9日 22時間
- マージ済み PR(30日)
- 3
説明
Motivation
PyDeequ currently supports the Spark 3.5 line, while the upstream Deequ project publishes a compatible Spark 4.1 artifact: com.amazon.deequ:deequ:2.0.18-spark-4.1. Supporting this artifact would let PyDeequ run on Spark 4.1 while retaining Spark 3.5 support.
This is intended as generic Apache Spark support; it does not add platform-specific configuration or documentation.
Relationship to #283
This proposal is designed to follow the Spark 3.5 upgrade in #283. The intended final mapping would be:
{
"3.5": "com.amazon.deequ:deequ:2.0.21-spark-3.5",
"4.1": "com.amazon.deequ:deequ:2.0.18-spark-4.1",
}
I would coordinate rebasing/merge order with #283 to avoid overlapping changes in dependency metadata, CI, and documentation.
Proposed design
- Add an exact
SPARK_VERSIONmapping for4.1todeequ:2.0.18-spark-4.1. - Expand the optional PySpark dependency range to allow the Spark 4.1 line.
- Make the Py4J/Scala collection bridge work with both Scala 2.12 (Spark 3.5) and Scala 2.13 (Spark 4.1):
- use
scala.collection.JavaConverters, which is available in both lines; - create empty Scala sequences through the existing sequence-conversion helper rather than calling
Seq.empty()through Py4J.
- use
- Add Spark 4.1 CI coverage with a compatible Python/Java runtime.
- Add focused configuration and runtime tests, plus documentation for selecting Spark 4.1 via
SPARK_VERSION=4.1. - Update package constraints and lock data so a Spark 4.1 installation receives PySpark-compatible pandas and NumPy versions.
Compatibility expectations
- A process selects one Deequ artifact based on its Spark runtime; it does not load Spark 3.5 and 4.1 artifacts together.
- Spark 3.5 behavior remains supported and continues to select its matching Deequ artifact.
Feedback requested
Would maintainers prefer this as a follow-up PR after #283 merges, or as a coordinated PR that incorporates/rebases onto #283's Spark 3.5 changes?
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず現在の SPARK_VERSION マッピングと #283 の Spark 3.5 変更を確認します。次に、オプションの PySpark 制約、Py4J/Scala コレクションブリッジ、CI 設定、対象を絞ったランタイムテスト、ドキュメント、パッケージロックデータを調査します。Spark 4.1 が Deequ 2.0.18 を選択し、Spark 3.5 のサポートが維持され、CI が成功し、ドキュメントに記載された設定が機能すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python, scala, spark
- 領域
- build-system, data-engineering, distributed-systems, documentation, testing
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100