Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Parquet checkpointing adds null dictionary entries and rejects mixed JSON arrays

オープン
#1,045 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@nabinchha がすでに取り組んでいます。

2026年10月19日 から。

  • #1062 @nabinchha による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
pandas, python
領域
data

調査の方向性

Start by running the attached repro.py scripts with and without --encode, then inspect the Parquet checkpoint writer and its read path. The issue reports failures for dictionaries and mixed JSON arrays in custom-column and structured-column outputs; identify where checkpoint serialization handles these values. Done means both cases round-trip with absent keys distinct from explicit nulls and mixed arrays stored successfully.

索引モデルが issue の本文から書いたものです。

説明

bug needs-discussion
Priority Level

Medium (Annoying but has workaround)

Describe the bug

Data Designer 0.9.3 can alter dictionaries during Parquet storage and fail to store schema-valid mixed arrays.

Arrow inference treats dictionaries as structs, merging their keys and adding null values for absent entries:

Input:
{"fields": {"alpha": 1}}
{"fields": {"beta": 2}}

Restored:
{"fields": {"alpha": 1, "beta": null}}
{"fields": {"alpha": null, "beta": 2}}

This changes the data’s meaning by making absent keys indistinguishable from explicit null values.

Mixed arrays such as [1, "two", true, null] fail checkpoint writing with ArrowInvalid:

Could not convert 'two' with type str: tried to convert to int64

These problems affect custom-column outputs. They also occur with schema-declared structured outputs after isolating the separate parser bug in #1043.

Steps/Code to reproduce bug

The attached scripts use deterministic inputs and require no credentials or model calls.

Reproduce through custom columns, then verify the JSON-text workaround:

uv run --script repro.py
uv run --script repro.py --encode

Reproduce through LLMStructuredColumnConfig:

uv run --script repro_structured.py --case mixed-array
uv run --script repro_structured.py --case typed-map --respect-schema
uv run --script repro_structured.py --case json-map --respect-schema

repro_structured.py mocks model generation while retaining DD’s actual parsing, structured-column generation, and storage. It tests both Pydantic and JSON Schema declarations.

--respect-schema diagnostically disables the parser’s additionalProperties rewrite to isolate storage behavior. It does not change the storage writer. The mixed-array case reproduces without this diagnostic.

Tested with:

data-designer==0.9.3
pydantic==2.14.1
pandas==2.3.3
pyarrow==24.0.0

repro_structured.py
repro.py

Expected behavior

Supported dictionary and flexible JSON values should retain their contents through checkpoint writes and reads. Absent dictionary keys must remain distinguishable from explicit nulls, and schema-valid mixed arrays should be stored successfully

Agent Diagnostic / Prior Investigation

Bug was encountered when making changes to a DD pipeline. Issue content and reproduction scripts are AI generated and human reviewed.

Fixed records round-trip correctly. Explicitly encoding whole custom-column payloads as JSON text preserves dictionaries and mixed arrays. Disabling the separate parser rewrite does not resolve the storage failures.

Additional context

Split from #1043, which tracks valid dictionary entries being removed during parsing.

Checklist
  • I reproduced this issue or provided a minimal example
  • I searched the docs/issues myself, or had my agent do so
  • If I used an agent, I included its diagnostics above
主要言語
Python
スター
2.4k
フォーク
234
平均マージ
22時間 5分
マージ済み PR(30日)
70

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

NVIDIA-NeMo/DataDesigner のほかの issue

NVIDIA-NeMo/DataDesigner の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。