Snowpark DataFrame API
Lazy-evaluated DataFrame API v Pythonu/Java/Scala — kód se kompiluje do SQL a běží na Snowflake warehouse, žádný Spark cluster.
Datové inženýrství a strojové učení v Pythonu, Javě nebo Scale přímo v Snowflake
Snowpark transformuje Snowflake z čistě SQL platformy na plnohodnotné vývojové prostředí. Datový engineering, machine learning a pokročilá analytika běží přímo tam, kde jsou data – bez přesunu, bez latence, bez bezpečnostních kompromisů.
Tradiční data pipelines přesouvají data ven ze skladu pro zpracování. Snowpark tento paradigm obrací:
Pandas-like API pro manipulaci s daty v Pythonu, Scala nebo Java
User-defined functions a stored procedures v Pythonu
End-to-end machine learning přímo ve Snowflake
Interaktivní datové aplikace hostované v Snowflake
Komplexní ETL/ELT transformace v Pythonu bez přesunu dat mimo Snowflake.
Trénink a inference ML modelů přímo na produkčních datech s plnou governance.
Streamlit aplikace pro interaktivní dashboardy a self-service analytiku.
Balíčkování datových produktů s UDFs pro bezpečné sdílení přes Marketplace.
Konkrétní use cases, které jsme implementovali nebo které demonstrují sílu Snowpark pro různá odvětví.
Migrace legacy PySpark ETL pipeline do Snowpark. DataFrame API je téměř identické, což umožňuje rychlou migraci.
snížení provozních nákladů
Scoring ML modelu pro personalizované doporučení přímo v Snowflake pomocí Python UDF. Model trénovaný lokálně, inference v produkci.
inference time
Automatizovaná příprava features pro ML modely. Snowpark pro transformace, Snowflake ML pro feature store.
rychlejší feature development
Komplexní data quality checks implementované jako Snowpark stored procedures. Spouštěné Tasks po každém data loadu.
redukce data issues
CDC pipeline pomocí Streams a Tasks. Snowpark procedury zpracovávají pouze změněná data, dramaticky snižuje compute.
snížení compute nákladů
GDPR-compliant anonymizace PII dat pomocí Python UDFs. Deterministické hašování pro zachování analytické hodnoty.
GDPR compliance
Praktické příklady Python kódu pro běžné Snowpark use cases.
Základní DataFrame operace podobné pandas - filtering, agregace, joins
from snowflake.snowpark import Session
from snowflake.snowpark.functions import col, sum, avg, when
# Připojení k Snowflake
session = Session.builder.configs(connection_params).create()
# Načtení dat jako DataFrame
orders_df = session.table("ORDERS")
customers_df = session.table("CUSTOMERS")
# Filtering a transformace
active_orders = orders_df.filter(
(col("STATUS") == "COMPLETED") &
(col("ORDER_DATE") >= "2024-01-01")
)
# Agregace podle regionu
regional_sales = active_orders.group_by("REGION").agg(
sum("AMOUNT").alias("TOTAL_SALES"),
avg("AMOUNT").alias("AVG_ORDER"),
col("REGION").count().alias("ORDER_COUNT")
)
# Join s customer daty
enriched_df = regional_sales.join(
customers_df.select("REGION", "REGION_MANAGER"),
on="REGION",
how="left"
)
# Uložení výsledku do tabulky
enriched_df.write.mode("overwrite").save_as_table("REGIONAL_SALES_SUMMARY")Kdy zvolit Snowpark a kdy jinou technologii? Objektivní srovnání pro informované rozhodnutí.
| Kritérium | Snowpark | PySpark/Databricks | dbt + Python | Pandas lokálně |
|---|---|---|---|---|
| Data locality | Data zůstávají ve Snowflake | Vyžaduje data transfer | Běží ve Snowflake | Stahuje vše lokálně |
| Škálování | Automatické s warehouse | Cluster autoscaling | Snowflake compute | Single machine limit |
| ML integrace | scikit-learn, XGBoost native | MLlib, full ML stack | Omezená ML podpora | Plná flexibilita |
| Governance | Unified se Snowflake | Vyžaduje Unity Catalog | Snowflake governance | Žádná built-in |
| Provozní náklady | Žádný cluster management | Cluster overhead | SaaS model | Minimální |
| GPU workloads | Container Services | Native GPU support | Nepodporováno | Vyžaduje cuDF |
| Learning curve | Pandas-like API | Spark specifika | SQL focus | Známé pro DS |
Data už jsou ve Snowflake
Snowpark
Zero data movement, unified governance, serverless compute
Potřebujete GPU pro deep learning
Databricks / cloud ML
Snowpark Container Services je v preview, Databricks má mature GPU support
Primárně SQL transformace
dbt
dbt je optimalizovaný pro SQL-first workflow s verzováním a testováním
Malá data, rychlé prototypování
Pandas lokálně
Pro datasety < 1M řádků je lokální vývoj rychlejší pro iterace
Multi-cloud nebo streaming
Spark/Databricks
Spark má širší ekosystém pro streaming a multi-cloud deployments
Osvědčené postupy pro Snowpark development a chyby, kterým se vyhnout.
DataFrame operace jsou type-safe a umožňují lepší optimalizaci. Pushdown funguje efektivněji.
Vectorized UDFs zpracovávají data v dávkách (pandas) - dramaticky rychlejší než scalar UDFs pro velké datasety.
Použijte snowpark-python lokálně s malým sample daty. Ověřte logiku před spuštěním na full dataset.
Query History ukazuje skutečnou spotřebu. Optimalizujte warehouse size podle real workload patterns.
collect() stahuje data do lokální paměti. Pro miliony řádků způsobí OOM. Zpracovávejte ve Snowflake.
Python loops přes řádky jsou extrémně pomalé. Využívejte DataFrame operace nebo vectorized UDFs.
is_permanent=True registruje UDF jednou. Avoid overhead opakované registrace při každém spuštění.
Každý import zvyšuje cold start time. Importujte pouze potřebné moduly, zvažte lazy imports.
Pro training ML modelů použijte WAREHOUSE_TYPE = SNOWPARK-OPTIMIZED. Více paměti per node.
Jeden write.save_as_table() místo tisíce INSERT statements. Batching dramaticky snižuje overhead.
Pushdown filtry na začátek pipeline. Menší intermediate datasets = rychlejší joiny.
Pro reused DataFrames použijte cache_result(). Eliminuje opakované computation.
Vývoj v oblíbených jazycích s plnou podporou Snowflake
Trénink modelů a inference přímo v Snowflake bez přesunu dat
Vlastní funkce a procedury v Pythonu/Scale
Komplexní ETL/ELT pipelines pomocí DataFrame API
Kontejnerizované workloady v Snowpark Container Services
Nativní Streamlit aplikace v Snowflake pro vizualizace
Implementace Snowpark projektů
Snowpark vývojové nástroje
Odpovědi na nejčastější otázky o vývoji v Snowpark
DataFrame API, UDFs, stored procedures, ML a containers — kompletní ekosystém pro vývojáře a data engineery.
Lazy-evaluated DataFrame API v Pythonu/Java/Scala — kód se kompiluje do SQL a běží na Snowflake warehouse, žádný Spark cluster.
Custom Python funkce (scalar, vectorized, table) registrované do Snowflake — pip dependencies přes Anaconda channel, transparentní pro SQL.
CREATE PROCEDURE ... LANGUAGE PYTHON — orchestrace ETL, ML scoring, business logika v Pythonu místo SQL/JavaScript.
Native ML knihovna — feature engineering, training (XGBoost, scikit-learn), Model Registry a inference — vše na Snowflake compute.
Spuštění Docker kontejnerů ve Snowflake s GPU support — Streamlit apps, custom LLMs, REST API služby bez vlastní Kubernetes.
Snowpark nahrazuje PySpark pro batch ETL nad Snowflake daty — žádný Spark, jeden compute layer, jednodušší ops a deployment.
Speciální warehouse type pro memory-intensive Snowpark workloads (16× RAM/node) — vhodné pro ML training a velké pandas operace.
Snowpark + Hybrid Tables umožňuje OLTP-style operace (single-row UPDATE/INSERT) — transakční aplikace na Snowflake bez externí DB.
dbt Python models běží jako Snowpark stored procedures — Python transformace v dbt projektu vedle SQL modelů, jeden orchestrator.
Snowpark UDF/procedury volají HTTPS endpointy (API, webhooks) přes EXTERNAL ACCESS INTEGRATION s Network Rules a Secrets.
Lokální mock Snowpark sessions pro unit testy — pytest běží bez Snowflake connectu, rychlý dev loop a CI/CD.
Git Integration + Snowflake CLI pro deployment kódu, pinned Anaconda packages, separace dev/test/prod databází, RBAC pro procedury.