Snowpark Connect for Spark 에서 지원되는 PySpark APIs¶
이 항목에 설명된 대로 Snowpark Connect for Spark 는 PySpark APIs를 지원합니다.
Snowpark Connect for Spark 는 PySpark 3.5.3 Spark Connect API와의 호환성을 제공하여 Snowflake에서 Spark 워크로드를 실행할 수 있도록 지원합니다. Snowpark Connect for Spark 호환성은 Pyspark 3.5.3 Spark Connect API를 사용하는 Spark 애플리케이션을 실행할 때의 실행 동작으로 정의됩니다. 이 가이드에서는 지원되는 APIs 및 호환성 수준에 대해 자세히 설명합니다.
호환성 수준 정의¶
- APIs의 완전한 호환성
완전한 호환성을 갖춘 APIs는 네이티브 PySpark와 동일하게 동작합니다. 이러한 APIs는 결과가 정확히 일치할 것이라는 확신을 가지고 사용할 수 있습니다.
- 높은 호환성 APIs
호환성이 높은 APIs는 정상적으로 작동하지만 다음과 같이 약간의 차이가 있을 수 있습니다.
오류 메시지 형식이 다를 수 있습니다.
출력 표시 형식이 다를 수 있습니다(예: 소수점 전체 자릿수, 열 이름 대소문자).
예외적인 상황에서 결과가 약간 다를 수 있습니다.
- 부분적 호환성 APIs
부분적 호환성이 있는 APIs는 정상적으로 작동하지만 다음과 같이 중요한 제한 사항이 있습니다.
일부 기능만 사용할 수 있습니다.
특정 시나리오에서 동작이 PySpark와 다를 수 있습니다.
추가 구성이 필요할 수 있습니다.
성능 특성이 다를 수 있습니다.
- 지원되지 않는 APIs
현재 구현되지 않았거나 Snowflake에서 지원할 수 없는 APIs입니다.
DataFrame APIs¶
핵심 DataFrame API 적용 범위입니다.
APIs의 완전한 호환성¶
cachecoalescecollectcountcrossJoindropDuplicatesdrop_duplicatesdropnafillnafirstheadisEmptyjoinlimitmeltoffsetpersistrepartitionByRangereplaceselectshowtailtaketoDFtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamedtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamed
높은 호환성 APIs¶
aggcolRegexcorrcovcrosstabcubedescribedistinctdropexceptAllgroupBygroupbyintersectintersectAllisLocalmapInPandasorderByrollupsortunionunionByNamewithColumn
참고¶
orderBy/sort: 체인의 마지막 DataFrame에서 추론된 열 순서입니다.union/unionByName: 유형 확대 동작은 약간 다를 수 있습니다.describe: 통계 출력 형식은 다를 수 있습니다.
부분적 호환성 APIs¶
aliasapproxQuantilecreateGlobalTempViewcreateOrReplaceGlobalTempViewcreateOrReplaceTempViewcreateTempViewexplainfilterfreqItemshintinputFilesprintSchemarandomSplitrepartitionsameSemanticssamplesampleByselectExprsemanticHashsortWithinPartitionssubtractsummarytransformwithColumnswithMetadata
참고¶
explain: 쿼리 계획 형식은 Spark와 다릅니다.repartition: 파티션 수는 정확하지 않을 수 있습니다.sample: 무작위 샘플링 구현은 다릅니다.createTempView: 뷰 수명 주기는 다를 수 있습니다.
지원되지 않는 APIs¶
checkSameSparkSessiondropDuplicatesWithinWatermarkobservepandas_apiregisterTempTableto_pandas_on_sparkwithWatermark
열 APIs¶
열 작업의 적용 범위입니다.
APIs의 완전한 호환성¶
ascbetweencontainsdesceqNullSafegetItemisNullisinlikeotherwisestartswithsubstrwhen
높은 호환성 APIs¶
aliasasc_nulls_firstasc_nulls_lastastypebitwiseANDbitwiseORbitwiseXORcastdesc_nulls_firstdesc_nulls_lastendswithisNotNull
참고¶
cast: Spark에서는 일부 유효하지 않은 캐스트가 NULL을 반환하지만, Snowpark에서는 오류가 발생합니다.alias: 구조체 필드 표시 형식은 다를 수 있습니다.
부분적 호환성 APIs¶
dropFieldsilikeoverrlikewithField
참고¶
over: 윈도우 프레임 사양에 미세한 차이가 있을 수 있습니다.rlike: Regex 구문은 Snowflake 규칙을 따릅니다.
SparkSession APIs¶
APIs의 완전한 호환성¶
rangesqltable
높은 호환성 APIs¶
createDataFrame
참고¶
스키마 추론은 서로 다른 유형(예: NUMBER(38,0) 및 LONG)을 생성할 수 있습니다.
부분적 호환성 APIs¶
addArtifactaddArtifactsaddTagclearTagsgetTagsinterruptAllinterruptOperationinterruptTagremoveTag
참고¶
태그는 Snowflake 쿼리 태그에 매핑됩니다.
인터럽트 작업은 작업 IDs 대신 Snowflake 쿼리 IDs를 사용합니다.
지원되지 않는 APIs¶
copyFromLocalToFsstop
GroupedData APIs¶
APIs의 완전한 호환성¶
aggmeanpivot
높은 호환성 APIs¶
aggmeanpivot
부분적 호환성 APIs¶
applyavgsum
지원되지 않는 APIs¶
applyInPandasWithStatecogroup
DataFrameReader APIs¶
APIs의 완전한 호환성¶
table
높은 호환성 APIs¶
csv
부분적 호환성 APIs¶
jsonloadparquetjdbc
참고¶
파일 경로는 Snowflake 스테이지 또는 클라우드 저장소(S3, GCS, Azure)를 사용합니다.
스키마 추론은 네이티브 Spark와 다를 수 있습니다.
일부 형식별 옵션은 지원되지 않을 수 있습니다.
지원되지 않는 APIs¶
orc
DataFrameWriter APIs¶
APIs의 완전한 호환성¶
modesaveAsTabletext
부분적 호환성 APIs¶
csvjsonoptionsparquet
참고¶
쓰기 작업은 Snowflake 스테이지 또는 클라우드 저장소로 이동합니다.
분할 동작은 다를 수 있습니다.
지원되지 않는 APIs¶
bucketByinsertIntojdbcorcsortBy
DataFrameWriterV2 APIs¶
최신 DataFrameWriterV2 API의 적용 범위입니다.
APIs의 완전한 호환성¶
replace
부분적 호환성 APIs¶
appendcreatecreateOrReplaceoptionoptionspartitionedBytablePropertyusing
카탈로그 APIs¶
APIs의 완전한 호환성¶
cacheTableclearCachedropGlobalTempViewdropTempViewisCachedrefreshByPathrefreshTableuncacheTable
높은 호환성 APIs¶
currentCataloglistCatalogslistColumnsrecoverPartitionssetCurrentCatalog
참고¶
listColumns: 열 이름은 대문자로 처리되고 유형은 Snowflake 전용으로 지정됩니다.오류 메시지는 형식이 다를 수 있습니다.
지원되지 않는 APIs¶
createExternalTablecreateTablefunctionExistsgetFunctionlistFunctionsregisterFunction
윈도우 및 WindowSpec APIs¶
윈도우 함수의 적용 범위입니다.
윈도우(모든 D0) APIs¶
partitionByorderByrangeBetweenrowsBetweenunboundedPrecedingunboundedFollowingcurrentRow
WindowSpec(모든 D0) APIs¶
partitionByorderByrangeBetweenrowsBetween