> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lancedb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Distributed Write

> How LanceDB Enterprise distributes a CTAS import's writes across plan executors.

**Applies to:** Embedded ❌, Enterprise ✅

Distributed write applies specifically to importing data with `CREATE
TABLE ... AS SELECT`: the query node that planned the statement partitions
the source -- Parquet files from a HuggingFace dataset, or row-group
ranges of an existing Lance dataset in object storage -- across plan
executors, each of which writes its own uncommitted Lance data files and
reports back. The query node collects those results and commits them
together as the new table's first version; no separate coordinator
service is involved. See [Architecture](https://docs.lancedb.com/index.md#architecture).

```mermaid theme={"theme":{"light":"vitesse-light","dark":"catppuccin-mocha"}}
%%{init: {"theme": "base", "themeVariables": {
  "background": "#ffffff", "primaryColor": "#ffffff", "primaryTextColor": "#221d19",
  "primaryBorderColor": "#ad9e95", "lineColor": "#6b625c", "textColor": "#221d19",
  "edgeLabelBackground": "#ffffff", "fontFamily": "Inter, sans-serif", "fontSize": "18px"
}}}%%
flowchart LR
    S["Source<br/>HuggingFace Parquet, or an<br/>existing Lance dataset in<br/>S3 / GCS / Azure"]
    Q["Query node<br/>plans the CTAS,<br/>commits the result"]
    PE1["Plan executor<br/>writes uncommitted files"]
    PE2["Plan executor<br/>writes uncommitted files"]
    PE3["Plan executor<br/>writes uncommitted files"]

    S --> Q
    Q --> PE1
    Q --> PE2
    Q --> PE3
    PE1 --> Q
    PE2 --> Q
    PE3 --> Q
    classDef default fill:#ffffff,stroke:#ad9e95,stroke-width:1px,color:#221d19
    classDef accent fill:#fff1ec,stroke:#e8582d,stroke-width:1.5px,color:#221d19
    class Q accent
```

An ordinary `INSERT` or `merge_insert`, from SQL or the SDK, does not
distribute this way -- it runs as a single write, on whichever node or
process executes it. Only a CTAS import fans the write itself out across
machines.

## Write interfaces

* [Import Datasets](https://docs.lancedb.com/ingestion/import.md) for the CTAS syntax this
  distributes.
* [Insert data](https://docs.lancedb.com/ingestion/insert.md) and [Merge](https://docs.lancedb.com/ingestion/merge-insert)
  for the ordinary, non-distributed write paths.
* [Storage Integration](https://docs.lancedb.com/sql/ddl/storage-integration.md) for configuring
  the source a CTAS import reads from.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.