1️⃣ Snowpark란? (Domain 1 — 아키텍처)
| 항목 | 내용 |
|---|
| 정의 | Python / Java / Scala 코드로 Snowflake 내부에서 직접 데이터 처리하는 라이브러리 |
| 핵심 원칙 | 데이터를 외부로 이동하지 않고 Snowflake 서버 내에서 실행 (Pushdown) |
| 지원 언어 | Java, Python, Scala (3개 고정 암기!) |
| 실행 환경 | Snowflake의 탄력적(Elastic) 서버리스 엔진 위에서 실행 |
💡 암기: "Snowpark = 코드를 Snowflake 안으로 가져간다"
2️⃣ DataFrame — 핵심 추상화 객체 (Domain 5 — 데이터 변환)
| 항목 | 내용 |
|---|
| DataFrame이란 | 데이터를 표현하고 조작하는 Snowpark의 핵심 객체 |
| 실행 방식 | Lazy Evaluation — 명령을 모아두다가 액션 호출 시 한번에 실행 |
| 실행 트리거 | .collect(), .show(), .write() 등 액션 메서드 호출 시 |
| SQL 변환 | DataFrame 연산이 자동으로 SQL로 변환되어 Snowflake로 전송 |
df = session.table("orders").select(col("id"), col("amount"))
results = df.collect()
💡 암기: "collect() 전까지는 실행 안 된다 = Lazy"
3️⃣ UDF (User-Defined Functions) (Domain 5 — 자주 출제!)
| 항목 | 내용 |
|---|
| UDF 지원 언어 | JavaScript, Python, SQL, Java |
| Snowpark UDF 특징 | 앱 코드 안에 인라인으로 작성 가능 |
| 실행 위치 | 코드가 Snowflake 서버로 Push되어 서버에서 실행 |
| 장점 | 데이터를 클라이언트로 이동할 필요 없음 → 대규모 병렬 처리 가능 |
add_one = udf(lambda x: x+1,
return_type=IntegerType(),
input_types=[IntegerType()])
💡 암기: "UDF도 Snowflake 서버 안에서 실행"
4️⃣ Stored Procedures (Domain 5 — 자주 출제!)
| 항목 | 내용 |
|---|
| 지원 언어 | JavaScript, Snowflake Scripting, Python (via Snowpark) |
| Snowpark Stored Proc | Python으로 작성, Snowflake 내부에서 실행 |
| UDF와 차이점 | Stored Proc은 DDL/DML 실행 가능, UDF는 값 반환에 특화 |
💡 암기: "Stored Proc = Python도 가능 (Snowpark 덕분에)"
5️⃣ Snowpark vs Spark Connector 비교 (자주 출제!)
| 비교 항목 | Snowpark | Spark Connector |
|---|
| 별도 클러스터 | ❌ 불필요 | ✅ 필요 |
| 데이터 이동 | ❌ Snowflake 내부 처리 | ✅ 외부로 데이터 이동 |
| Pushdown | ✅ 모든 연산 (UDF 포함) | 일부만 |
| 개발 환경 | Jupyter, VS Code, IntelliJ | 별도 Spark 환경 |
💡 암기: "Snowpark = 클러스터 없이, 데이터 이동 없이"
6️⃣ 포인트 요약
✅ 중요!!
1. 지원 언어 → Java, Python, Scala
2. 핵심 객체 → DataFrame
3. 실행 방식 → Lazy Evaluation (collect()로 트리거)
4. 연산 위치 → 항상 Snowflake 서버 내부 (Pushdown)
5. UDF 지원 언어 → JS / Python / SQL / Java
6. 별도 클러스터 불필요
✅ 포인트
| 문제 유형 | 키워드 |
|---|
| "Snowpark에서 코드가 실행되는 위치는?" | Snowflake 서버 내부 |
| "DataFrame이 실제로 실행되는 시점은?" | 액션 메서드 호출 시 (collect 등) |
| "Spark Connector 대비 Snowpark 장점은?" | 별도 클러스터 불필요, 모든 연산 Pushdown |
| "Snowpark가 지원하는 언어는?" | Java, Python, Scala |
| "Snowpark로 UDF를 만들면 어디서 실행?" | Snowflake 서버에서 실행 |
📊 도메인별 Snowpark 출제 비중
Domain 1 (25%) — AI Data Cloud & Architecture
└─ Snowpark 개념, 지원 언어, Pushdown 원칙
Domain 5 (17%) — Data Transformations
└─ DataFrame, UDF, Stored Procedures, Lazy Evaluation