mkpipe-loader-snowflake
Snowflake loader plugin for MkPipe. Writes Spark DataFrames into Snowflake tables using the native Snowflake Spark connector (spark-snowflake), which stages data via internal cloud storage (S3/Azure/GCS) — significantly faster than JDBC for large datasets.
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:
snowflake_target:
variant: snowflake
host: myaccount.snowflakecomputing.com
port: 443
database: MY_DATABASE
schema: MY_SCHEMA
user: myuser
password: mypassword
warehouse: MY_WAREHOUSE
With RSA key pair authentication:
connections:
snowflake_target:
variant: snowflake
host: myaccount.snowflakecomputing.com
port: 443
database: MY_DATABASE
schema: MY_SCHEMA
user: myuser
warehouse: MY_WAREHOUSE
private_key_file: /path/to/rsa_key.p8
private_key_file_pwd: mypassphrase
Table Configuration
pipelines:
- name: pg_to_snowflake
source: pg_source
destination: snowflake_target
tables:
- name: public.events
target_name: STG_EVENTS
replication_method: full
batchsize: 50000
Write Strategy
Control how data is written to Snowflake:
- name: public.events
target_name: STG_EVENTS
write_strategy: upsert # append | replace | upsert | merge
write_key: [id] # required for upsert/merge
| Strategy | Snowflake Behavior |
|---|---|
append |
Insert via Spark connector (default for incremental) |
replace |
Overwrite table via Spark connector (default for full). With if_exists: append: truncate + insert (preserves schema/indexes) |
upsert |
Write to temp table, then MERGE INTO target USING temp ON ... WHEN MATCHED THEN UPDATE ... WHEN NOT MATCHED THEN INSERT ... |
merge |
Same as upsert for Snowflake |
Note:
upsert/mergerequireswrite_key. The loader creates a temp table, writes data there, executes a MERGE statement, then drops the temp table.
Write Parallelism & Throughput
Snowflake loader uses the native Spark connector. Two parameters control write performance:
- name: public.events
target_name: STG_EVENTS
replication_method: full
batchsize: 50000 # rows per batch insert (default: 10000)
write_partitions: 4 # coalesce DataFrame to N partitions before writing
How they work
batchsize: number of rows buffered before sending to Snowflake. Larger batches reduce round-trips and staging overhead.write_partitions: callscoalesce(N)on the DataFrame before writing, controlling the number of concurrent write operations to Snowflake.
Performance Notes
- Snowflake Warehouse size is the primary write performance lever. A larger warehouse processes inserts faster regardless of partition count.
- The Spark connector stages data internally before committing. Large
batchsize(50,000+) reduces staging overhead. - For very large loads, consider using Snowflake's native
COPY INTOvia an external stage (S3/GCS) instead — that is significantly faster but requires additional infrastructure. write_partitions: 4–8is a good default to balance throughput and connection count.
All Table Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
string | required | Source table name |
target_name |
string | required | Snowflake destination table name |
replication_method |
full / incremental |
full |
Replication strategy |
batchsize |
int | 10000 |
Rows per batch insert |
write_partitions |
int | — | Coalesce DataFrame to N partitions before writing |
write_strategy |
string | — | append, replace, upsert, merge |
write_key |
list | — | Key columns for upsert/merge (required) |
if_exists |
string | — | replace (drop+create) or append (preserve table, truncate+insert). Inherits from settings |
dedup_columns |
list | — | Columns used for mkpipe_id hash deduplication |
tags |
list | [] |
Tags for selective pipeline execution |
pass_on_error |
bool | false |
Skip table on error instead of failing |
Metadata
Release files for mkpipe-loader-snowflake 0.11.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_loader_snowflake-0.11.0.tar.gz | 9.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mkpipe_loader_snowflake-0.11.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.8 kB
Release files / mkpipe_loader_snowflake-0.11.0.tar.gz
| Download URL | mkpipe_loader_snowflake-0.11.0.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8dac21fee7407805cd71028cf54874bacde9bb30bfdc968fb8c096a3edee554b
|
|
BLAKE2b-256 checksum How to use checksums |
8176ba487a3466df1832d72782f1c7156aaee93b17a9dca1b0c8c1b21bde5103
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / mkpipe_loader_snowflake-0.11.0-py3-none-any.whl
| Download URL | mkpipe_loader_snowflake-0.11.0-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9eed593c11123dfc45d537147885a43157ea9941aa55bf3867e570e5ca52fdf9
|
|
BLAKE2b-256 checksum How to use checksums |
41ffc149bed9b9abe8ac6532239884079550472fe53533f5ad8b7b01e9602839
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Security for mkpipe-loader-snowflake 0.11.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.