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

  • cache

  • coalesce

  • collect

  • count

  • crossJoin

  • dropDuplicates

  • drop_duplicates

  • dropna

  • fillna

  • first

  • head

  • isEmpty

  • join

  • limit

  • melt

  • offset

  • persist

  • repartitionByRange

  • replace

  • select

  • show

  • tail

  • take

  • toDF

  • toLocalIterator

  • toPandas

  • unionAll

  • unpersist

  • unpivot

  • where

  • withColumnsRenamed

  • toLocalIterator

  • toPandas

  • unionAll

  • unpersist

  • unpivot

  • where

  • withColumnsRenamed

高い互換性がある APIs

  • agg

  • colRegex

  • corr

  • cov

  • crosstab

  • cube

  • describe

  • distinct

  • drop

  • exceptAll

  • groupBy

  • groupby

  • intersect

  • intersectAll

  • isLocal

  • mapInPandas

  • orderBy

  • rollup

  • sort

  • union

  • unionByName

  • withColumn

メモ

  • orderBy / sort:チェーン内の最後の DataFrame から推測される列の順序設定。

  • union / unionByName:型拡大の動作が若干異なる場合があります。

  • describe:統計出力の形式が異なる場合があります。

部分的な互換性がある APIs

  • alias

  • approxQuantile

  • createGlobalTempView

  • createOrReplaceGlobalTempView

  • createOrReplaceTempView

  • createTempView

  • explain

  • filter

  • freqItems

  • hint

  • inputFiles

  • printSchema

  • randomSplit

  • repartition

  • sameSemantics

  • sample

  • sampleBy

  • selectExpr

  • semanticHash

  • sortWithinPartitions

  • subtract

  • summary

  • transform

  • withColumns

  • withMetadata

メモ

  • explain:クエリプランの形式がSparkと異なります。

  • repartition:パーティション数が正確ではない可能性があります。

  • sample:ランダムサンプリングの実装が異なります。

  • createTempView:ビューのライフサイクルが異なる場合があります。

サポートされていない APIs

  • checkSameSparkSession

  • dropDuplicatesWithinWatermark

  • observe

  • pandas_api

  • registerTempTable

  • to_pandas_on_spark

  • withWatermark

列 APIs

列操作の対象範囲。

完全な互換性がある APIs

  • asc

  • between

  • contains

  • desc

  • eqNullSafe

  • getItem

  • isNull

  • isin

  • like

  • otherwise

  • startswith

  • substr

  • when

高い互換性がある APIs

  • alias

  • asc_nulls_first

  • asc_nulls_last

  • astype

  • bitwiseAND

  • bitwiseOR

  • bitwiseXOR

  • cast

  • desc_nulls_first

  • desc_nulls_last

  • endswith

  • isNotNull

メモ

  • cast:一部の無効なキャストはSparkで NULL を返しますが、Snowparkではエラーを返します。

  • alias:構造フィールドの表示形式が異なる場合があります。

部分的な互換性がある APIs

  • dropFields

  • ilike

  • over

  • rlike

  • withField

メモ

  • over:ウィンドウフレームの仕様に微妙な違いがある場合があります。

  • rlike:正規表現構文はSnowflakeの規則に従います。

SparkSession APIs

完全な互換性がある APIs

  • range

  • sql

  • table

高い互換性がある APIs

  • createDataFrame

メモ

スキーマ推論により、異なる型(例: NUMBER(38,0)LONG)が生成される場合があります。

部分的な互換性がある APIs

  • addArtifact

  • addArtifacts

  • addTag

  • clearTags

  • getTags

  • interruptAll

  • interruptOperation

  • interruptTag

  • removeTag

メモ

  • タグはSnowflakeクエリタグにマッピングされます。

  • 中断操作では、IDs 操作の代わりにSnowflakeクエリ IDs を使用します。

サポートされていない APIs

  • copyFromLocalToFs

  • stop

GroupedData APIs

完全な互換性がある APIs

  • agg

  • mean

  • pivot

高い互換性がある APIs

  • agg

  • mean

  • pivot

部分的な互換性がある APIs

  • apply

  • avg

  • sum

サポートされていない APIs

  • applyInPandasWithState

  • cogroup

DataFrameReader APIs

完全な互換性がある APIs

  • table

高い互換性がある APIs

  • csv

部分的な互換性がある APIs

  • json

  • load

  • parquet

  • jdbc

メモ

  • ファイルパスには、Snowflakeステージまたはクラウドストレージ(S3、GCS、Azure)を使用します。

  • スキーマ推論がネイティブSparkと異なる可能性があります。

  • 一部の形式固有のオプションがサポートされていない場合があります。

サポートされていない APIs

  • orc

DataFrameWriter APIs

完全な互換性がある APIs

  • mode

  • saveAsTable

  • text

部分的な互換性がある APIs

  • csv

  • json

  • options

  • parquet

メモ

  • 書き込みはSnowflakeステージまたはクラウドストレージに送信されます。

  • パーティション分割の動作が異なる場合があります。

サポートされていない APIs

  • bucketBy

  • insertInto

  • jdbc

  • orc

  • sortBy

DataFrameWriterV2 APIs

新しい DataFrameWriterV2 API の適用範囲。

完全な互換性がある APIs

  • replace

部分的な互換性がある APIs

  • append

  • create

  • createOrReplace

  • option

  • options

  • partitionedBy

  • tableProperty

  • using

カタログ APIs

完全な互換性がある APIs

  • cacheTable

  • clearCache

  • dropGlobalTempView

  • dropTempView

  • isCached

  • refreshByPath

  • refreshTable

  • uncacheTable

高い互換性がある APIs

  • currentCatalog

  • listCatalogs

  • listColumns

  • recoverPartitions

  • setCurrentCatalog

メモ

  • listColumns:列名は大文字であり、型はSnowflake固有です。

  • エラーメッセージの形式が異なる場合があります。

サポートされていない APIs

  • createExternalTable

  • createTable

  • functionExists

  • getFunction

  • listFunctions

  • registerFunction

ウィンドウおよび WindowSpec APIs

ウィンドウ関数の対象範囲。

ウィンドウ(すべてのD0)APIs

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween

  • unboundedPreceding

  • unboundedFollowing

  • currentRow

WindowSpec(すべてのD0)APIs

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween