# Batch Data Splitter

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

- Skill: `cas-bigdatalab/batch-data-splitter` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add cas-bigdatalab/batch-data-splitter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cas-bigdatalab/batch-data-splitter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: cas-bigdatalab (https://skillmd.com/u/cas-bigdatalab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cas-bigdatalab/batch-data-splitter

---


# 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`。

## 使用方法

### 按份数分割
```bash
python scripts/run_batch_data_splitter.py \
  --input corpus.csv \
  --output_dir ./splits_manifest.json \
  --num_splits 10
```

### 按每份数量分割
```bash
python scripts/run_batch_data_splitter.py \
  --input corpus.csv \
  --output_dir ./splits_manifest.json \
  --chunk_size 5000
```

### 打乱后分割
```bash
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. 这里只做均匀分片，不做比例拆分或分层保持。

