AI Data Pipelines
Build an AI pipeline by separating payload storage, feature updates, and search indexes. This guide uses append tables with Data Evolution for managed BLOBs and column updates. Python readers and some other multimodal capabilities do not require this storage mode.
Choose the Pieces
| Requirement | Use | Follow-up |
|---|---|---|
| Store images, audio, documents, or video with metadata | Managed BLOB columns | BLOB Storage |
| Backfill or replace selected feature columns | Data Evolution | Partial Updates |
| Store fixed-dimension embeddings separately | VECTOR columns and Vortex files | Vector Storage |
| Find similar embeddings | Explicitly built vector index | Vector Index |
| Filter scalar metadata or search text | BTree or full-text index | Global Index |
| Read training batches or run distributed computation | PyPaimon with PyTorch or Ray | PyPaimon |
Create Data Evolution tables without a primary key, using the default unaware-bucket layout
(bucket = -1), and enable both row-tracking.enabled and data-evolution.enabled. The id
columns below are application join keys; these append tables do not enforce their uniqueness.
See Data Evolution requirements.
Store Payloads and Metadata
The examples assume a configured Paimon catalog. This DDL creates a table used by the Ray walkthrough below; load uniquely identified payloads before running that walkthrough.
- Flink SQL
- Spark SQL
CREATE TABLE item_features (
id BIGINT,
label STRING,
payload BYTES COMMENT '__BLOB_FIELD',
feature BIGINT
) WITH (
'row-tracking.enabled' = 'true',
'data-evolution.enabled' = 'true'
);
CREATE TABLE item_features (
id BIGINT,
label STRING,
payload BINARY COMMENT '__BLOB_FIELD',
feature BIGINT
) USING paimon
TBLPROPERTIES (
'row-tracking.enabled' = 'true',
'data-evolution.enabled' = 'true'
);
BLOB values use dedicated .blob files. A query projecting only id and label can avoid reading
the payload bytes. For ingestion and lazy access to large objects, see
PyPaimon BLOBs. JVM primary-key tables have a separate
BLOB storage design with different constraints.