제품 및 기술

Apache Spark™용 Snowpark Connect 공개 미리 보기로 제공 --- 이제 Spark 클라이언트도 Snowflake에서

버전 3.4에서 Apache Spark™ 커뮤니티는 Spark Connect를 도입했습니다. 이러한 분리형 클라이언트 서버 아키텍처는 코딩 작업과 Spark 클러스터 작업을 분리합니다. 이 새로운 아키텍처를 통해 이제 Snowflake 웨어하우스에서 Spark 코드를 실행할 수 있게 됨에 따라 Spark 클러스터를 위한 프로비저닝 및 유지 관리도 불필요하게 되었습니다.

Apache Spark™용 Snowpark Connect의 공개 미리 보기를 선보이게 되어 기쁩니다. Snowpark Connect를 통해 이제 Spark 코드를 Snowflake의 강력한 벡터화 엔진으로 구동할 수 있을 뿐만 아니라 별도의 Spark 환경을 유지 관리하고 튜닝하는 데 드는 골치 아픈 수고(종속성, 버전 호환성, 업그레이드 관리 등)를 덜 수 있게 되었습니다. 이제 Snowflake에서 모든 최신 Spark DataFrame, Spark SQL 및 사용자 정의 함수(UDF) 코드를 실행할 수 있습니다.

Spark용 Snowpark Connect는 Snowflake 가상 웨어하우스의 탄력적인 컴퓨팅 런타임을 지원하여 강력한 Snowflake 엔진과 익숙한 Spark 코드의 시너지 효과를 이끌어내는 동시에 비용 절감과 개발 가속화라는 이점까지 제공합니다. 이제 Spark 전용 클러스터를 구비할 필요가 없습니다. 호환 가능한 Spark SQL, DataFrame, UDF 등을 Snowflake 플랫폼에서 작성하거나 온보딩하여 바로 실행할 수 있습니다. Snowflake가 모든 성능 튜닝 및 규모 조정을 자동으로 처리하여 Spark를 직접 관리하는 데 따르는 운영 오버헤드에서 개발자를 해방합니다. 또한 데이터 처리를 Snowflake에서 하면 불필요한 중복 작업 없이 수명 주기 전반에 걸쳐 데이터의 일관성 및 보안을 보장하는 데 도움이 되는 강력한 단일 거버넌스 프레임워크를 업스트림에서 구축하게 됩니다.

snow park connect
그림 1. Snowpark의 최신 피처인 Snowpark Connect는 Snowpark DataFrames로 마이그레이션할 필요 없이 Spark 코드를 Snowflake에서 바로 실행할 수 있도록 지원함으로써 개발 편의성을 획기적으로 향상시킵니다. Snowpark는 새로운 파이프라인 구축에서 Snowflake SQL, AI, pandas 등 플랫폼별 통합까지 개발 편의성 향상을 위한 도구를 계속해서 제공할 것입니다.

Snowpark Client를 사용하여 Python, Java 및 Scala 언어로 데이터 파이프라인을 작성하는 고객들은 평균적으로 다음과 같은 효과를 경험하고 있습니다.

  • 관리형 Spark 대비 5.6배 빠른 성능

  • 관리형 Spark 대비 41%의 비용 절감

Spark용 Snowpark Connect(PuPr)의 출시로 이제는 Spark에 익숙한 사용자가 코드를 Snowpark Client용으로 변환하거나 Snowpark Client API를 새로 익힐 필요 없이 Snowpark를 통한 실행의 이점을 그대로 누릴 수 있습니다.

snowpark connect
그림 2. Spark PySpark 클라이언트를 VSCode, Jupyter Notebooks, Apache Airflow™, Snowflake Notebook, Spark Submit 등에서 연결하면 Snowflake 플랫폼에서 Spark 작업을 실행할 수 있습니다.

“VideoAmp는 오랫동안 Spark와 Snowflake를 모두 활용해 왔습니다. 그동안 많은 워크로드를 Snowpark로 마이그레이션했는데 이제 Snowpark Connect로 코드 상호 운용성이 한 차원 높아졌습니다. 기존 코드를 그대로 Snowflake에서 활용할 수 있다는 것은 엄청난 이점인데 현재 확인한 초기 결과는 매우 좋습니다. 가장 좋았던 점은 Snowpark Connect를 사용하면 워크로드를 마이그레이션하는 데 중요한 엔지니어링 시간을 들이지 않아도 된다는 점이었습니다. 그냥 바로 일을 시작하면 되죠.”

John Adams
SVP of Architecture at VideoAmp

Spark Connect에 기반하여 개발된 Snowpark Connect

Spark Connect는 Spark 클라이언트와 서버를 분리하여 어떤 애플리케이션에서든 Spark를 더 편리하게 사용할 수 있도록 지원하기 위해 출시되었습니다. Spark Connect의 출시 이전에는 애플리케이션과 Spark 드라이버가 함께 실행되어야 했지만, 이제는 별도 실행이 가능합니다. Python 스크립트나 데이터 노트북 같은 애플리케이션은 검증 전 논리적 실행 계획(unresolved logical plan)을 원격 Spark 클러스터로 보내기만 하면 됩니다. 이러한 방식은 다양한 도구에 대한 Spark의 연결성을 향상시킬 뿐만 아니라 최신 앱 개발에도 유리합니다. 

Figure 3: Snowpark was originally built on the same premise of client-server separation as Spark Connect. In this architectural view, you can see how paired with Spark Connect, we’re able to transparently bring the ease of use, performance benefits, and reliability of the Snowflake platform to Spark workloads.
그림 3. Snowpark는 Spark Connect와 마찬가지로 클라이언트와 서버의 분리라는 동일한 전제 하에 구축되었습니다. 이러한 아키텍처 관점에서 보면, 둘의 결합을 통해 Snowflake 플랫폼의 사용 편의성, 안정성 및 성능 이점을 Spark 워크로드에 그대로 제공할 수 있게 된 이유를 쉽게 이해할 수 있을 것입니다.

Snowpark 역시 클라이언트와 서버의 분리라는 동일한 전제 하에 구축되었습니다. 이제 Spark Connect와의 결합으로 Snowflake 플랫폼의 사용 편의성, 안정성 및 성능 이점을 Spark 워크로드에 손쉽게 제공할 수 있게 되었습니다. Snowpark Connect를 사용하면 Snowflake 웨어하우스에서 Spark 코드 실행 및 제반 작업이 다 처리되므로 Spark 클러스터를 위한 프로비저닝 및 유지 관리가 필요 없어집니다. Snowpark Connect는 현재 Spark 3.5.x 버전을 지원하며, 이 계열 버전의 피처 및 개선 사항과 호환됩니다.

 

Spark to Snowflake: 데이터가 있는 곳에서 코딩하기

지금까지는 Spark 코드로 Snowflake 데이터를 처리하기 위해 Spark Connector를 사용했는데, 이 방식은 데이터 이동을 유발하여 추가 비용, 지연 시간, 거버넌스 복잡성이라는 문제를 낳았습니다. Snowpark에서 작업하면 성능과 거버넌스를 향상하며 비용도 절감할 수 있었지만, 여전히 코드를 다시 작성해야 하는 경우가 많아 개발 속도가 느려지는 문제가 있었습니다. 이제 Snowpark Connect로 데이터 이동과 코드 변환으로 인한 지연 시간 없이 Snowflake에서 직접 데이터 처리를 수행할 수 있게 되었습니다.

 

개방형 데이터 레이크하우스와의 연동 

Spark용 Snowpark Connect는 Apache Iceberg™ 테이블과 연동되며, 이에는 외부 관리형 Iceberg 테이블카탈로그 연결 데이터베이스도 포함됩니다. 이제 데이터를 이동하거나 Spark 코드를 다시 작성할 필요 없이 Snowflake 플랫폼의 강력한 성능, 사용 편의성 및 거버넌스를 활용할 수 있습니다. 

 

시작 방법

코드를 실행하기 전에 설정 가이드를 따라주십시오. 아래 코드 스니펫은 지원되는 Snowflake 클라이언트 중 하나인 Jupyter Notebooks의 샘플이며, Snowflake 테이블을 읽고 DataFrame 연산을 수행하는 방법을 보여줍니다.

import pyspark
import os
from snowflake import snowpark_connect
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
from pyspark.sql.functions import to_timestamp, current_timestamp
from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql import SparkSession

os.environ["SPARK_CONNECT_MODE_ENABLED"] = "1"
snowpark_connect.start_session()  # Start the local |spconnect| session

spark = snowpark_connect.get_session()



spark = snowpark_connect.get_session()


# -------------------------------------------
## Displaying Data from a table in Snowflake which is already available via share 
# -------------------------------------------

orders = spark.read.table("SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS")
orders.show(2)

customers = spark.read.table("SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER")
customers.show(2)

# --------------------------------------------------
##  Top 10 Most frequent buyers and their order count
# ---------------------------------------------------
frequent_buyers = orders.join(customers, orders.o_custkey == customers.c_custkey, "inner") \
.groupBy(customers.c_name) \
.count() \
.orderBy("count", ascending=False)

frequent_buyers.show(10)


# # -------------------------------------------------------------------------------------
# 1. Read from the Managed Iceberg Table that you have created in the account using the tutorial 
# -------------------------------------------------------------------------------------

iceberg_table = "iceberg_tutorial_db.PUBLIC.customer_iceberg"  # Full table name

df = spark.sql(f"SELECT * FROM {iceberg_table}")

# -------------------------------------------
## Display Data
# -------------------------------------------
df.show(5)

이제 Snowflake Notebooks, Jupyter Notebooks, Snowflake Stored Procedures, VSCode, Airflow 또는 Snowpark Submit을 통해 Snowflake에서 Spark DataFrame, SQL 및 UDF 코드를 실행할 수 있으므로 Snowflake, Iceberg(외부 관리형 포함) 및 다양한 클라우드 스토리지 옵션 간에 원활한 통합이 가능합니다.

참고 및 제한 사항

Snowpark Connect는 현재 Spark 3.5.x 버전에서만 작동합니다. 여기에는 Spark DataFrame API 및 Spark SQL에 대한 지원이 포함됩니다. 하지만 API 지원 범위와 관련하여 몇 가지 유의할 점이 있습니다. 예를 들어, RDD, Spark ML, MLlib, Streaming 및 Delta API는 현재 Snowpark Connect에서 지원하는 피처에 포함되지 않습니다. 또한 지원되는 API의 경우에도 Snowpark Connect 설명서에 명시된 대로 몇 가지 의미상 유의할 점이 있을 수 있습니다. Snowpark Connect는 현재 Python 환경에서만 사용할 수 있으며, Java 및 Scala 지원은 개발 중입니다.

Data Engineering Connect 이벤트 페이지에서 Spark용 Snowpark Connect를 소개하는 발표회 영상을 시청하실 수 있습니다. 시청 후 귀사에 유익한 솔루션이라고 생각하신다면, 귀사 담당 팀과 상담하시거나 여기로 문의하시기 바랍니다. 이 피처에 대해 더 자세히 소개하는 9월 10일의 웨비나도 꼭 등록하시고 일정표에 입력하시기 바랍니다. 

 


1 2022년 11월부터 2025년 5월까지 Snowpark와 관리형 Apache Spark 서비스의 속도 및 비용을 비교한 고객의 프로덕션 사용 사례 및 개념 증명(PoC) 기준임. 모든 조사 결과는 실제 고객 데이터 기반의 실제 성과를 요약한 것이며, 벤치마크를 위해 가공된 데이터 세트를 반영하지 않습니다.

eBook

Apache Spark에서 Snowflake로 마이그레이션 성공 비결

비용과 복잡성을 줄이고 신뢰성을 개선하려는 선도 기업들이 Apache Spark 기반 솔루션에서 Snowflake로 전환하고 있는 이유
기사 공유하기

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

30일 무료 평가판시작하기

Snowflake를 30일 동안 무료로 사용해 보세요. 다른 솔루션에 내재된 복잡성, 비용 부담, 제약 조건 등을 해소하는 데 도움이 되는 AI 데이터 클라우드를 경험하실 수 있습니다.