Skip to content

Migrate Parquet support to Mason package - #5510

Open
eric-vo wants to merge 17 commits into
Bears-R-Us:mainfrom
eric-vo:parquet-mason-migration
Open

Migrate Parquet support to Mason package#5510
eric-vo wants to merge 17 commits into
Bears-R-Us:mainfrom
eric-vo:parquet-mason-migration

Conversation

@eric-vo

@eric-vo eric-vo commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Replaces Arkouda's Parquet implementation with the external Mason Parquet package.

Arkouda now retains only server-specific responsibilities: message handling, symbol-table conversion, client responses, and Arkouda-specific null processing. File, schema, reader, writer, and distributed Parquet mechanics are delegated to the package.

Changes

  • Remove Arkouda's vendored Parquet C++ sources and legacy Arrow build shims.
  • Add package acquisition and build integration.
  • Re-export the package API through ParquetMsg for existing server modules.
  • Preserve distributed, string, list, multi-column, append, and null-handling behavior.
  • Read the runtime Arrow version through the package's C++ API.
  • Make embedded Python interpreter initialization idempotent after testing exposed repeated initialization in CLIENT mode.
  • Expand checkpoint and Parquet round-trip coverage.

Dependency

This PR depends on the companion Mason Parquet PR and should be merged after it.

eric-vo added 4 commits July 15, 2026 14:07
- Updated `test_checkpoint` to include `uint8` as a valid dtype and adjusted array creation accordingly.
- Introduced `test_unknown_entry_type` to validate error handling for unknown checkpoint entry types.
- Enhanced parquet tests in `io_test.py` to ensure proper handling of uint8 data types, including round-trip tests for various scenarios.
- Removed a known failure case from `parquet_edge_test.py` related to concatenated gzip members due to Arrow v9 correctness issues.

@jabraham17 jabraham17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review part 1, I have not yet looked at the Parquet server code changes

Comment thread arkouda/numpy/pdarraycreation.py Outdated
Comment thread make/deps/parquet.mk Outdated
Comment thread scripts/get_parquet_package.sh Outdated
Comment thread scripts/get_parquet_package.sh Outdated
Comment thread scripts/get_parquet_package.sh
Comment thread src/CheckpointMsg.chpl Outdated
Comment thread tests/numpy/pdarray_creation_test.py Outdated
Comment thread tests/numpy/pdarray_creation_test.py
Comment thread tests/pandas/io_test.py
Comment on lines 903 to 904

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I take it you have now implemented delta encoding? Nice!

@eric-vo eric-vo Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delta encoding appears to work with the current Arrow, so it seems like expecting an error here is stale? It's somewhat unrelated to this PR though in my opinion, so should I remove this edit?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is dependent on arrow version? If you are confident it will work on all supported versions of arrow, I agree the comment is stale and you can leave this in. But if this is arrow version dependent I think you should leave it alone

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the test suite is run with Arrow v9, this will flag as a failure, correct?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I thought the current version we're using though is 24 (which causes the test to fail since it'll have correct data); should I preserve compatibility with 9?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The latest version that can be used is 24, but the test suite can (and is) run with older versions. I think the main system where this test runs on a nightly basis is with arrow 9. Sadly, this test does not yet run in the CI.

I would suggest reverting this, or guarding it with a version check

Comment thread src/ParquetMsg.chpl Outdated
Comment thread src/ParquetMsg.chpl Outdated
Comment thread src/ParquetMsg.chpl Outdated
Comment thread src/ParquetMsg.chpl Outdated
Comment thread src/ParquetMsg.chpl Outdated
Comment thread src/ParquetMsg.chpl Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants