mkpipe-extractor-clickhouse
ClickHouse extractor plugin for MkPipe. Reads ClickHouse tables using the native clickhouse-spark connector, which uses ClickHouse's binary HTTP protocol for columnar data transfer — faster than JDBC, especially for analytical queries.
Documentation
For more detailed documentation, please visit the GitHub repository.
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Connection Configuration
connections:
clickhouse_source:
variant: clickhouse
host: localhost
port: 8123
database: source_db
user: default
password: mypassword
Table Configuration
pipelines:
- name: clickhouse_to_pg
source: clickhouse_source
destination: pg_target
tables:
- name: events
target_name: stg_events
replication_method: full
fetchsize: 100000
Incremental Replication
- name: events
target_name: stg_events
replication_method: incremental
iterate_column: updated_at
iterate_column_type: datetime
partitions_column: id
partitions_count: 8
fetchsize: 50000
Custom SQL
- name: events
target_name: stg_events
replication_method: full
custom_query: "SELECT id, user_id, event_type, created_at FROM events WHERE {query_filter}"
Use {query_filter} as a placeholder — it is replaced with the incremental WHERE clause on incremental runs, or WHERE 1=1 on full runs.
Read Parallelism
ClickHouse extractor uses JDBC with Spark's native partition support. For large tables, set partitions_column and partitions_count to read in parallel:
- name: events
target_name: stg_events
replication_method: incremental
iterate_column: created_at
iterate_column_type: datetime
partitions_column: id # numeric column to split on
partitions_count: 8 # number of parallel JDBC partitions
fetchsize: 50000
How it works
- Spark reads the min/max of
partitions_columnand divides the range intopartitions_countequal slices - Each slice is fetched by a separate Spark task via a separate JDBC connection
fetchsizecontrols how many rows each connection fetches per round-trip
Performance Notes
- Full replication: partitioning is not applied (only works with
incremental). partitions_columnshould be a numeric column with good distribution (e.g. primary key).fetchsize: ClickHouse is a columnar store — largefetchsize(50,000–200,000) works well.- ClickHouse handles large scans efficiently; for distributed tables parallelism is less critical than for row-based databases.
All Table Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
string | required | ClickHouse table name |
target_name |
string | required | Destination table name |
replication_method |
full / incremental |
full |
Replication strategy |
iterate_column |
string or list | — | Column(s) for incremental watermark. String for single column or SQL expression, list for multi-column OR logic |
iterate_column_type |
int / datetime |
— | Type of iterate_column |
partitions_column |
string | same as iterate_column |
Column to split JDBC reads on |
partitions_count |
int | 10 |
Number of parallel JDBC partitions |
fetchsize |
int | 100000 |
Rows per JDBC fetch |
custom_query |
string | — | Override SQL with {query_filter} placeholder |
custom_query_file |
string | — | Path to SQL file (relative to sql/ dir) |
write_partitions |
int | — | Coalesce to N partitions before writing |
tags |
list | [] |
Tags for selective pipeline execution |
pass_on_error |
bool | false |
Skip table on error instead of failing |
Metadata
Release files for mkpipe-extractor-clickhouse 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mkpipe_extractor_clickhouse-0.10.0.tar.gz | 8.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mkpipe_extractor_clickhouse-0.10.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.1 kB
Release files / mkpipe_extractor_clickhouse-0.10.0.tar.gz
| Download URL | mkpipe_extractor_clickhouse-0.10.0.tar.gz |
|---|---|
| Size | 8.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
21182aafb9722c8b3214e36322b438684c7636cc9333c04b8939ff018e2d9e38
|
|
BLAKE2b-256 checksum How to use checksums |
3c22a01cd5ce1c6383399cd8f6ed90920cf8a96f8b900b320d586440fa91c5b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / mkpipe_extractor_clickhouse-0.10.0-py3-none-any.whl
| Download URL | mkpipe_extractor_clickhouse-0.10.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e19cd8c6410f4252eb51ad53a2ba67a1ef0f00058c5a1f7e390082ea367a1d51
|
|
BLAKE2b-256 checksum How to use checksums |
823031aba8adab0978e52503d837a2a3ce578faecdc8e3c23be47fca8c2cbb09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Security for mkpipe-extractor-clickhouse 0.10.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.