Parquet Files

Create Parquet files from C# data sources with incremental updates.

6|Updated Oct 27, 2025
One-click install
npx skills add https://github.com/lawless-m/claude-skills --skill parquet-files
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: Parquet Files
Source: https://github.com/lawless-m/claude-skills/tree/main/Parquet Files
Command: npx skills add https://github.com/lawless-m/claude-skills --skill parquet-files

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires Parquet.Net, Microsoft.Data.Analysis, Newtonsoft.Json, and includes references (resource) components.

What problem does it solves? This Skill streamlines the creation, management, and incremental updating of Parquet files in C#, addressing challenges like memory management, multi-threading, and dynamic schema generation for large datasets. It helps users efficiently store and process big data, saving development time and optimizing resource usage.

Core Features & Use Cases

  • Dynamic Schema Generation: Automatically create Parquet schemas from DataTable or dictionary structures, handling type conversions.
  • Memory-Efficient Batching: Implement strategies for processing large datasets in batches, clearing memory, and forcing garbage collection to prevent OutOfMemory exceptions.
  • Thread-Safe Updates: Utilize ParquetUpdateQueue and SemaphoreSlim for safe, concurrent writing and incremental updates to Parquet files.
  • Use Case: Develop a data pipeline that continuously syncs millions of records from a MySQL database to a Parquet file, ensuring incremental updates, deduplication, and efficient memory usage even with multi-threaded data ingestion.

Quick Start

Use the Parquet Files skill to help me create a Parquet file from a C# DataTable, ensuring efficient memory usage for large datasets.

Frequently Asked Questions about Parquet Files

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create Parquet files from a C# DataTable with efficient memory management?

Create Parquet files by using Parquet.Net to dynamically generate schemas from your DataTable, process data in batches, and implement explicit garbage collection between batches to prevent OutOfMemory exceptions when handling large datasets.

Can I incrementally update existing Parquet files with new data from multiple threads?

Yes, use ParquetUpdateQueue for coordination and SemaphoreSlim for serialized writes to safely append new records to Parquet files concurrently, ensuring thread-safe incremental updates without data corruption.

What's the best way to sync millions of records from MySQL to Parquet with deduplication?

Build a data pipeline using Parquet.Net with batch sizing and multi-threaded writing via ConcurrentBag<T> for data collection, implementing incremental updates and memory-efficient processing to continuously sync and deduplicate large MySQL datasets.

Does Parquet.Net handle dynamic schema generation from unstructured data sources like APIs?

Parquet.Net automatically generates Parquet schemas from dictionary structures and DataTables with type conversion, enabling you to export data from external APIs and Elasticsearch without manually defining schemas.

What Parquet.Net versions does this approach require, and why does version matter?

This Skill requires Parquet.Net versions 4.23.5 through 4.25.0; these versions provide the API stability and memory handling needed for multi-threaded batch writing and garbage collection coordination in production pipelines.

How do I handle memory constraints when writing very large batches to Parquet files?

Implement batch-level logging and explicit memory management with GC.Collect() and GC.WaitForPendingFinalizers() after each batch write, combined with ConcurrentBag<T> clearing to keep heap usage predictable across multi-threaded operations.