OpenParable
Skip to content
← Back to skills

Batch Data Splitter

Documents
batch_data_splitter

Batch Data Splitter is an Agent Skill for documents published in the cas-bigdatalab/piflow repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

批量数据均匀分片工具。读取json/jsonl/csv输入,按份数或固定条数切成多个子文件,输出一个清单JSON供下游节点消费。 当用户提到数据分割、批量拆分、数据分片、均匀分块等需求时使用此skill。 即使用户没有明确说出"分片",只要任务是把整份批量数据均匀拆成多个文件,就应该使用此skill。 不负责按字段分组导出或随机采样。

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/cas-bigdatalab/piflow/blob/HEAD/workspace/skills/batch_data_splitter/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/batch-data-splitter, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

Batch Data Splitter 批量数据均匀分割 Skill

功能概述

本skill面向大容量批量数据集进行均等分割,可设定分割份数或单份样本容量,将整体数据集均匀划分为多组子数据集。 无差别平均分配原始样本,保持各组数据分布一致性,适配流水线分批运算、多任务并行处理、数据分库存储等业务场景。

触发条件

当用户请求以下任务时,应使用此skill:

  • 批量拆分
  • 数据分片
  • 均匀划分
  • 按份数切块
  • 按固定条数切块

核心参数说明

必需参数

  • --input:输入文件路径
  • --output_dir:输出清单文件路径(JSON),实际分割文件写入同名 _splits/ 子目录

可选参数

  • --num_splits:分割份数,默认 0(0 表示按 chunk_size 分割)
  • --chunk_size:每份样本数量,默认 1000
  • --output_prefix:输出文件名前缀,默认 split
  • --shuffle:是否打乱顺序,默认 false
  • --random_seed:随机种子,默认 42

输入文件格式

支持 json、jsonl、csv。

使用方法

按份数分割

python scripts/run_batch_data_splitter.py \
  --input corpus.csv \
  --output_dir ./splits_manifest.json \
  --num_splits 10

按每份数量分割

python scripts/run_batch_data_splitter.py \
  --input corpus.csv \
  --output_dir ./splits_manifest.json \
  --chunk_size 5000

打乱后分割

python scripts/run_batch_data_splitter.py \
  --input corpus.csv \
  --output_dir ./splits_manifest.json \
  --num_splits 5 \
  --shuffle true

输出示例

[OK] Batch data splitting completed!
   Input file: corpus.csv
   Total samples: 11
   Number of splits: 4
   Samples per split: [3, 3, 3, 2]
   Manifest file: ./splits_manifest.json
   Splits directory: ./splits_manifest_splits
   Output files:
     - split_001.csv (3 samples)
     - split_002.csv (3 samples)
     - split_003.csv (3 samples)
     - split_004.csv (2 samples)

环境要求

  • Python 3.x
  • 标准库即可运行

注意事项

  1. 如果总数不能整除,最后一份可能样本数较少。
  2. num_splits 优先级高于 chunk_size。
  3. 当 num_splits 大于总样本数时,会自动收敛为最多生成 total_count 份。
  4. 输出文件名格式:{prefix}_{序号}.{扩展名}。
  5. --output_dir 指定的是清单 JSON 文件路径,实际分割文件写入同名 _splits/ 子目录,是引擎下游节点可消费的单文件输出。
  6. 这里只做均匀分片,不做比例拆分或分层保持。