PySpark APIs 支持 Snowpark Connect for Spark¶
如本主题中所述,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:选择使用 时默认使用的角色和仓库。正则表达式语法遵循 Snowflake 约定。
SparkSession APIs¶
完全兼容 APIs¶
rangesqltable
高兼容性 APIs¶
createDataFrame
备注¶
架构推理可能会生成不同的类型(例如 NUMBER(38,0) 与 LONG)。
部分兼容 APIs¶
addArtifactaddArtifactsaddTagclearTagsgetTagsinterruptAllinterruptOperationinterruptTagremoveTag
备注¶
标签映射到 Snowflake 查询标签。
中断操作使用 Snowflake 查询 IDs 而不是操作 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