반응형
[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_Snowpark
Snowpark는 Snowflake에서 제공하는 개발 프레임워크로, 데이터 엔지니어와 데이터 사이언티스트가 Snowflake의 데이터를 보다 쉽게 조작하고 프로세싱할 수 있도록 도와주는 도구예요. 데이터 처리 로직을 코드로 작성해서 Snowflake 안에서 직접 실행할 수 있게 해주는 것이 가장 큰 특징이에요.
1. Snowpark란?
- Snowpark는 Java, Scala, Python 같은 프로그래밍 언어를 사용해 데이터프레임(DataFrame) 기반의 데이터 처리 작업을 Snowflake에서 수행할 수 있는 프레임워크예요.
- 데이터프레임 API를 통해 데이터를 조작하거나 변환할 수 있어요. 이를 사용하면 데이터 사이언티스트나 데이터 엔지니어들이 Python, Scala, 또는 Java와 같은 익숙한 언어로 데이터 작업을 할 수 있어요.
- Snowflake의 컴퓨팅 파워를 사용해서 데이터를 처리하므로, 클라이언트 환경의 성능에 의존하지 않고, 대규모 데이터 처리가 가능해요.
2. Snowpark의 주요 기능
Snowpark는 데이터 처리 및 변환 작업을 위한 다양한 기능을 제공해요:
- 데이터프레임(DataFrame) API:
- 데이터프레임은 테이블 형태의 데이터를 다루는 데 쓰이는 객체로, SQL처럼 데이터를 필터링, 집계, 조인할 수 있는 기능을 제공해요.
- 예를 들어, SQL로 수행하던 데이터 필터링, 조인, 정렬 등을 Python 코드로 쉽게 작성할 수 있어요.
- Snowpark의 데이터프레임은 Lazy Evaluation(지연 실행) 방식으로 작동해요. 즉, 실제 쿼리는 데이터프레임 조작이 모두 완료된 후에 실행돼서 최적화된 방식으로 Snowflake에서 처리돼요.
- UDF(사용자 정의 함수)와 통합:
- Python, Java, Scala로 사용자 정의 함수(UDF)를 작성해서 Snowpark와 함께 사용할 수 있어요.
- 이렇게 작성한 UDF는 Snowflake에서 실행되기 때문에, 로컬 머신의 성능에 의존하지 않고 대용량 데이터 처리가 가능해요.
- 예를 들어, Python을 사용해 복잡한 데이터 변환 로직을 구현한 후, 이를 UDF로 등록해서 Snowpark 데이터프레임과 함께 사용할 수 있어요.
- Snowflake 엔진과의 긴밀한 통합:
- Snowpark는 **Snowflake의 컴퓨팅 리소스(가상 웨어하우스)**를 사용해 데이터를 처리해요.
- 즉, 클라이언트에서 데이터를 내려받아 처리하지 않고, Snowflake 안에서 데이터 처리가 이루어지기 때문에 네트워크 트래픽이 줄어들고, 데이터 보안을 유지하면서 처리할 수 있어요.
3. Snowpark 사용 예시
- 예시 1: Python에서 Snowpark 사용
- 여기서 session 객체는 Snowflake와의 연결을 나타내요.
- df는 "employees" 테이블에서 부서가 'Engineering'인 직원들만 필터링한 데이터프레임이에요.
- df.show()를 통해 결과를 확인할 수 있어요
- Snowpark를 사용해 Python에서 간단한 데이터 처리 작업을 수행할 수 있어요:
- 예시 2: UDF와 함께 사용하기
- calculate_bonus 함수는 급여의 10%를 보너스로 계산하는 단순한 함수예요.
- 이 함수를 UDF로 등록하고, 데이터프레임의 select 구문에서 호출해서 사용했어요.
- Snowpark에서 **사용자 정의 함수(UDF)**를 사용해 데이터를 변환할 수 있어요:
4. Snowpark의 장점
- 프로그래밍 언어로 데이터 처리:
- 데이터 과학자나 엔지니어들이 Python, Scala, Java와 같은 익숙한 언어로 데이터 처리를 코드로 작성할 수 있어서 SQL에 익숙하지 않은 사용자에게도 유용해요.
- 지연 실행과 최적화:
- Snowpark의 데이터프레임은 **지연 실행(lazy execution)**을 지원해요. 이는 데이터프레임 연산이 최종적으로 실행되기 전까지 Snowflake에서 최적화되기 때문에 성능이 향상될 수 있어요.
- 데이터 이동 최소화:
- Snowflake의 데이터베이스 내에서 직접 처리할 수 있기 때문에, 데이터를 클라이언트로 내려받아 처리하는 방식보다 네트워크 비용과 데이터 이동을 줄일 수 있어요.
- 대용량 데이터 처리:
- Snowflake의 대규모 분산 컴퓨팅 능력을 활용할 수 있어서, 매우 큰 데이터셋도 Snowpark를 통해 처리할 수 있어요.
5. 비유로 이해하기
- Snowpark는 마치 레고 조립 키트 같아요:
- 프로그래머는 레고 조각(데이터프레임 API와 UDF)을 사용해 원하는 모양의 데이터 처리 로직을 만들 수 있어요.
- Snowflake는 이 레고 조각들을 최적화하고 빠르게 조립해서 결과물을 만들어주는 역할을 해요.
- 레고 조각(코드)은 클라이언트 측에서 조립 설계를 하지만, 실제로 조립하는 과정(데이터 처리)은 Snowflake의 서버에서 이루어지기 때문에 고성능을 유지할 수 있어요.
6. Snowpark의 사용 사례
- 데이터 전처리:
- Snowpark를 사용해 대규모 데이터셋을 필터링하거나 정제할 수 있어요. 예를 들어, 결측값 처리나 이상치 제거 등을 Snowflake 안에서 직접 처리할 수 있어요.
- ML 파이프라인 구축:
- Python과 Snowpark를 함께 사용해서 머신러닝 데이터 파이프라인을 구성할 수 있어요. Snowflake에서 모델 학습을 위한 데이터 준비를 한 후, Python의 ML 라이브러리를 사용해 학습할 수 있죠.
- 실시간 데이터 처리:
- Snowpark와 Streams, Tasks를 함께 사용해서 실시간으로 데이터의 변경 사항을 처리하고 분석할 수 있어요.
7. 정리
Snowpark는 Snowflake 안에서 Java, Scala, Python과 같은 언어로 데이터를 처리하고 변환할 수 있게 해주는 프레임워크예요. 데이터프레임 API와 UDF 통합을 통해, 대규모 데이터셋을 효율적으로 처리할 수 있고, 데이터베이스 안에서 직접 데이터 로직을 작성할 수 있기 때문에 개발자와 데이터 과학자 모두에게 유용한 도구랍니다. Snowpark를 사용하면 Snowflake의 컴퓨팅 리소스를 최대한 활용하면서 복잡한 데이터 처리 작업을 코드로 유연하게 구현할 수 있어요!
[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_Snowpark
반응형