Native Parquet write falls back on int96RebaseModeInWrite=LEGACY even when timestamps are not written as INT96
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 62/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
調査の方向性
フォールバックは NativeWriteUtils.legacyDatetimeRebaseWriteReason にあります。まずそこから始めて、出力タイムスタンプ型を確認する前に int96RebaseModeInWrite をどのように検査しているかを読んでください。INT96のチェックは spark.sql.parquet.outputTimestampType が INT96 の場合にのみ適用されるよう条件を追加し、次に TIMESTAMP_MICROS と int96RebaseModeInWrite=LEGACY を使い、書き込みがネイティブのまま維持されることを確認する回帰テストを追加してください。そのテストが通り、docs/source/user-guide/latest/parquet.md の段落が更新されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
What is the problem the feature request solves?
Found in review of #7053. The native Parquet writer fallback added there, NativeWriteUtils.legacyDatetimeRebaseWriteReason, treats spark.sql.parquet.int96RebaseModeInWrite=LEGACY as a reason to fall back whenever the output has a timestamp column. That setting only governs the INT96 encoding. When spark.sql.parquet.outputTimestampType is TIMESTAMP_MICROS or TIMESTAMP_MILLIS, Spark writes INT64 and uses datetimeRebaseModeInWrite instead, so the INT96 setting has no effect on the output.
Reproduction: a timestamp column, outputTimestampType=TIMESTAMP_MICROS, datetimeRebaseModeInWrite=CORRECTED. Changing only int96RebaseModeInWrite from CORRECTED to LEGACY makes the helper return a fallback reason instead of None. Spark writes the same INT64 TIMESTAMP(MICROS) either way (for 1500-01-01 12:34:56.123456 both files contain -14831724303876544).
The fallback is safe, but an unrelated legacy INT96 setting disables native write acceleration for a write the native writer handles correctly.
Describe the potential solution
Only apply the INT96 condition when spark.sql.parquet.outputTimestampType is INT96. The native writer always writes INT64 microseconds and ignores outputTimestampType when writing, so the check has to read the session conf.
Add a regression test with a non-INT96 timestamp output and int96RebaseModeInWrite=LEGACY that asserts the write stays native and matches Spark's value. Update the paragraph in docs/source/user-guide/latest/parquet.md that names int96RebaseModeInWrite=LEGACY as a fallback trigger.
Additional context
Reviewer comment: https://github.com/apache/datafusion-comet/pull/7053#discussion_r4458640616
Follow-on to #7053, which should merge first.
- 主要言語
- Scala
- スター
- 1.3k
- フォーク
- 405
- 平均マージ
- 3日 3時間
- マージ済み PR(30日)
- 269
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/datafusion-comet のほかの issue
-
requires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/datafusion-comet#7479 ·
メンテナーはふだん 2 日以内に返信
-
requires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/datafusion-comet#7458 ·
メンテナーはふだん 2 日以内に返信
-
requires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/datafusion-comet#7453 ·
メンテナーはふだん 2 日以内に返信
-
area:ci enhancement priority:low requires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
apache/datafusion-comet#7319 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
area:ci bug priority:low requires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/datafusion-comet#7315 ·
メンテナーはふだん 2 日以内に返信
apache/datafusion-comet の issue をすべて見る
似ている issue
-
enhancement good first issue help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
bug minor
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
propensive/soundness#2418 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
scylladb/scylla-migrator#432 ·
メンテナーはふだん 1 日以内に返信
-
30-minutes algorithm any-language codewars dart easy elixir hackerrank hacktoberfest haskell help wanted interview-prep julia leetcode lua open-source r scala students zig
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Huerte/algo-solutions-python#163 ·
メンテナーはふだん 1 日以内に返信
-
Python: zadd stringifies bytes/bytearray/memoryview members (silent data corruption), including in Batch対応中かも @prateek-kumar-improving が 1 日前に担当しました。 オープンbug 🐞 python 🐍
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
valkey-io/valkey-glide#7521 ·
メンテナーはふだん 1 日以内に返信