
大数据数据分析批处理流处理机器学习图计算【免费下载链接】sparkApache Spark - A unified analytics engine for large-scale data processing项目地址https://gitcode.com/gh_mirrors/sp/spark点击查看免费下载Apache Spark 的 PySpark 是一个面向大规模数据处理、面向 Python 开发者的统一分析引擎接口。当您从旧版本 PySpark 升级到新版本或从 Koalasdatabricks.koalas迁移到 pandas API on Spark 时部分 API 名称、默认行为、类型映射与序列化机制会发生变更。本指南以仓库中的官方迁移文档python/docs/source/migration_guide/pyspark_upgrade.rst 与 python/docs/source/migration_guide/koalas_to_pyspark.rst为骨架结合 PySpark 源码与 SQLConf 配置实现系统梳理从 PySpark 1.3 到 4.3 的逐版本变更点、恢复旧行为所需的配置开关与环境变量以及 Koalas 迁移到 pandas API on Spark 的具体改动帮助您制定可落地的迁移与回归验证方案。说明仓库根目录的 docs/pyspark-migration-guide.md 已归档为跳转页完整内容位于 python/docs/source/migration_guide/index.rst 下。本文以归档后的官方正文为准。迁移指南体系先定位你的迁移场景python/docs/source/migration_guide/index.rst 将迁移场景划分为两类版本升级从旧版本 PySpark 升级到新版本参考Upgrading PySpark即 python/docs/source/migration_guide/pyspark_upgrade.rst逐版本阅读变更点。代码迁移从 Koalas 迁移到 pandas API on Spark参考 python/docs/source/migration_guide/koalas_to_pyspark.rst。由于 PySpark 内部与 Spark SQL、Structured Streaming、MLlib、Spark Core 共享大量组件升级 PySpark 时上述组件的迁移指南同样具有参考价值建议一并阅读仓库内对应的 SQL 迁移指南、Structured Streaming 迁移指南、MLlib 迁移指南 与 Spark Core 迁移指南。从 Koalas 迁移到 pandas API on SparkKoalas 是 pandas API on Spark 的前身。迁移时最核心的改动是导入路径与命名导入包名从databricks.koalas改为pyspark.pandas# import databricks.koalas as ks import pyspark.pandas as psDataFrame.koalasKoalas DataFrame 上的访问器在 pandas-on-Spark DataFrame 中更名为DataFrame.pandas_on_sparkDataFrame.koalas在 Spark 4.0 中已移除。原通过 monkey-patch 注入到 PySpark DataFrame 的DataFrame.to_koalas与DataFrame.to_pandas_on_spark统一更名为DataFrame.pandas_api两个旧方法均在 Spark 4.0 中移除。也就是说从 PySpark DataFrame 获取 pandas-on-Spark 视图统一使用df.pandas_api()。databricks.koalas.__version__已移除改用pyspark.__version__获取版本号。逐版本升级细则从 PySpark 4.2 升级到 4.3Python 3.10 支持被移除PySpark 4.3 起不再支持 Python 3.10请使用受支持的更高版本 CPython。另见下文 4.3.0 新增的内部配置spark.sql.execution.pythonUDF.mapInBatch.legacy.acceptAnyIterable.enabled源码见 sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scalamapInPandas/mapInArrowUDF 在 4.3.0 起返回值必须是严格迭代器匹配声明的Iterator[...]签名若旧代码返回其他可迭代对象如 list需设置该配置为true恢复旧行为。从 PySpark 4.1 升级到 4.2PyArrow 最低版本要求从 15.0.0 提升到 18.0.0。Spark Connect Python Client 的DataFrame.__getattr__不再急切校验列名如需恢复旧行为设置环境变量PYSPARK_VALIDATE_COLUMN_NAME_LEGACY1。源码实现在 python/pyspark/sql/connect/dataframe.py当该变量为1或列名以__开头时执行校验配套测试见 python/pyspark/sql/tests/connect/test_connect_basic.py。DataFrame[Stream]Reader/Writer.option/.options现在会过滤None值将其视为“未设置”不再把None作为 Javanull转发给 JVM与 Spark Connect Python 客户端SPARK-49263及OptionUtils._set_opts保持一致。要点想设置某选项为默认值直接省略该选项或传None想显式设置为空字符串请传。PySpark 与 JVM 之间的列式数据交换默认使用 Apache Arrow配置spark.sql.execution.arrow.pyspark.enabled默认值改为true。如需恢复旧的非 Arrow行式数据交换将其设为false。该配置定义于 SQLConf.scala作用于DataFrame.toPandas以及从 Pandas DataFrame / NumPy ndarray 创建 DataFrame 的场景且对ArrayType of TimestampType等类型不支持。常规 Python UDF 默认启用 Arrow 优化spark.sql.execution.pythonUDF.arrow.enabled默认值改为true。恢复旧行为设为false。该配置自 3.4.0 引入SQLConf.scala仅当函数至少接受一个参数时可生效。常规 Python UDTF 默认启用 Arrow 优化spark.sql.execution.pythonUDTF.arrow.enabled默认值改为true。恢复旧行为设为false。该配置自 3.5.0 引入定义于 SQLConf.scala。PyPy 不再被官方支持请改用 CPython 运行 PySpark。SparkSession.createDataFrame从 NumPy ndarray 建表要求 PyArrow转换路径改为直接经 Arrow不再经 pandas。若此前在 Arrow 禁用时依赖 NumPy dtype 推断 schema请重新检查推断结果——现在遵循 Arrow 的类型映射。pandas UDF 接收可空整数列时的输入类型变化当批次含 null 时列以 pandas 可空整数扩展 dtypeInt8/Int16/Int32/Int64交付而非float64。请更新假定可空整数列输入为float64的 UDF 代码。pandas API on Spark 的DataFrame.drop/Series.drop行为对齐 pandas任一指定标签缺失即抛KeyError此前仅当全部缺失才抛。迁移时请先确认所有标签存在、先过滤出存在的标签或传errorsignore。Python Data Source 类型不匹配校验返回的 Arrow 数据列类型与声明 schema 不符时报错DATA_SOURCE_RETURN_SCHEMA_MISMATCH列数与列名不匹配此前已报此错。请让数据源返回与声明 schema 类型一致的数据。SimpleDataSourceStreamReader偏移量推进校验read()返回非空批次但未将结束偏移推进到起始偏移之后时报错SIMPLE_STREAM_READER_OFFSET_DID_NOT_ADVANCE此前会无限重放同一批次并导致预取缓存无限增长。请确保返回的结束偏移越过最后一条记录。从 PySpark 4.0 升级到 4.1Python 3.9 支持被移除。PyArrow 最低版本从 11.0.0 提升到 15.0.0Pandas 最低版本从 2.0.0 提升到 2.2.0。Spark Connect Python Client 的DataFrame.__getitem__不再急切校验列名恢复旧行为同样设置PYSPARK_VALIDATE_COLUMN_NAME_LEGACY1。Arrow 优化的 Python UDF 支持 UDT 输入/输出不再回退到常规 UDF。恢复旧行为设spark.sql.execution.pythonUDF.arrow.legacy.fallbackOnUDT为true。去除不必要的 pandas 实例转换UDF当spark.sql.execution.pythonUDF.arrow.enabled开启时去除不必要的 pandas 转换导致输出 schema 与指定 schema 不同时的类型强制转换行为变化。恢复旧行为启用spark.sql.legacy.execution.pythonUDF.pandas.conversion.enabled该配置定义于 SQLConf.scala默认false。去除不必要的 pandas 实例转换UDTF当spark.sql.execution.pythonUDTF.arrow.enabled开启时同理。恢复旧行为启用spark.sql.legacy.execution.pythonUDTF.pandas.conversion.enabled定义于 SQLConf.scala默认false。BinaryType默认一致映射为 Pythonbytes恢复旧行为设spark.sql.execution.pyspark.binaryAsBytesfalse。该配置自 4.1.0 引入默认trueSQLConf.scala。4.1.0 之前各场景的映射如下表场景BinaryType对应的 Python 类型未启用 Arrow 优化的常规 UDF 与 UDTFbytearrayDataFrame APISpark Classic 与 Spark Connectbytearray数据源Data Sourcebytearray带多余 pandas 转换的 Arrow 优化 UDF / UDTFbytesspark.sql.execution.pandas.convertToArrowArraySafely默认开启开启时 PyArrow 对不安全转换整数溢出、浮点截断、精度丢失等报错影响 Arrow 启用的 UDF / pandas_udf 的返回序列化以及 PySpark DataFrame 的创建。恢复旧行为设为false。该配置自 3.0.0 引入、默认trueSQLConf.scala其内部属性.internal()在源码中标记为内部使用序列化端的报错引导逻辑见 python/pyspark/sql/conversion.py。pandas API on Spark 支持 ANSI 模式compute.ansi_mode_supportTrue默认时工作于 ANSI 模式compute.fail_on_ansi_mode仅在该选项为False时生效。从 PySpark 3.5 升级到 4.0环境与依赖版本Python 3.8 支持被移除。Pandas 最低版本从 1.0.5 提升到 2.0.0Numpy 最低版本从 1.15 提升到 1.21PyArrow 最低版本从 4.0.0 提升到 11.0.0。pandas API on Spark 移除的 API替换方案见括号Int64Index/Float64Index移除直接使用Index。DataFrame.iteritems/Series.iteritems移除改用DataFrame.items/Series.items。DataFrame.append/Series.append移除改用ps.concat。DataFrame.mad/Series.mad移除。Index.factorize/Series.factorize的na_sentinel参数移除改用use_na_sentinel。Categorical与CategoricalIndex系列方法的inplace参数移除add_categories、remove_categories、set_categories、rename_categories、reorder_categories、as_ordered、as_unordered、remove_unused_categories。ps.date_range的closed参数移除。DataFrame.between_time/Series.between_time的include_start/include_end参数移除改用inclusive。DataFrame.plot/Series.plot的sort_columns参数移除。ps.read_csv/ps.read_excel的squeeze参数移除。DataFrame.info的null_counts参数移除改用show_counts。Series.between的inclusive参数不再接受True/False改用both/neither。Index.asi8移除改用Index.astype。Index.is_type_compatible移除改用Index.isin。DataFrame.to_latex/Series.to_latex的col_space参数移除。DataFrame.to_spark_io移除改用DataFrame.spark.to_spark_io。Series.is_monotonic/Index.is_monotonic移除改用Series.is_monotonic_increasing/Index.is_monotonic_increasing。DataFrame.get_dtype_counts移除改用DataFrame.dtypes.value_counts()。DataFrame.to_excel/Series.to_excel的encoding、verbose参数移除。read_csv/read_excel的mangle_dupe_cols参数移除。DataFrameGroupBy.backfill移除改用DataFrameGroupBy.bfillDataFrameGroupBy.pad移除改用DataFrameGroupBy.ffill。Index.is_all_dates移除。read_excel的convert_float参数移除。DataFrame.koalas移除改用DataFrame.pandas_on_spark。DataFrame.to_koalas与DataFrame.to_pandas_on_spark移除统一改用DataFrame.pandas_api。DatetimeIndex.week/DatetimeIndex.weekofyear移除改用DatetimeIndex.isocalendar().weekSeries.dt.week/Series.dt.weekofyear移除改用Series.dt.isocalendar().week。pyspark.testing.assertPandasOnSparkEqual移除改用pyspark.pandas.testing.assert_frame_equal。别名Y、M、H、T、S弃用改用YE、ME、h、min、s。行为变更与配置开关DatetimeIndex的日期时间属性day、month、year等从int64变为int32。Series.str.replace的regex参数默认值从True改为False单字符pat搭配regexTrue时按正则而非字面字符串处理。value_counts的结果列名固定为count传normalizeTrue时为proportion索引以原对象命名。MultiIndex.append不再保留索引名。DataFrameGroupBy.agg传列表时遵守as_indexFalse。DataFrame.stack保证按既有列顺序而非字典序排序。对 decimal 类型对象应用astype时缺失值变为True此前为False。Map 列 schema 推断改为合并所有键值对的 schema恢复仅从第一个非空键值对推断的旧行为设spark.sql.pyspark.legacy.inferMapTypeFromFirstPair.enabledtrue定义于 SQLConf.scala默认false。compute.ops_on_diff_frames默认开启恢复旧行为设为false。YearMonthIntervalType在DataFrame.collect中不再返回底层整数恢复旧行为设环境变量PYSPARK_YM_INTERVAL_LEGACY1。该变量的读取逻辑见 python/pyspark/sql/types.py注意 Spark Connect 路径不生效见 python/pyspark/sql/tests/connect/test_connect_error.py 的注释与 python/pyspark/sql/conversion.py。通配导入收窄from pyspark.sql.functions import *不再导入函数以外的对象如DataFrame、Column、StructType请从对应模块导入例如from pyspark.sql import DataFrame, Column、from pyspark.sql.types import StructType。ANSI 模式限制pandas API on Spark 在底层 Spark 开启 ANSI 模式默认开启时会抛异常因为其无法与 ANSI 模式正常协作。解决办法显式设spark.sql.ansi.enabledfalse或将 pandas-on-spark 选项compute.fail_on_ansi_mode设为False强制运行可能产生意外行为。从 PySpark 3.3 升级到 3.4Array 列 schema 推断改为合并所有元素的 schema恢复仅从第一个元素推断的旧行为设spark.sql.pyspark.legacy.inferArrayTypeFromFirstElement.enabledtrue定义于 SQLConf.scala默认false。GroupBy.apply的func未指定返回类型且compute.shortcut_limit0时采样行数固定为 2保证采样行数 2确保 schema 推断准确。Index.insert越界时抛IndexErrorindex {} is out of bounds for axis 0 with size {}对齐 pandas 1.4。Series.mode保留系列名对齐 pandas 1.4。Index.__setitem__先检查value是否为Column类型避免在is_list_like中抛出意外的ValueError。astype(category)会按原数据dtype刷新categories.dtype对齐 pandas 1.4。GroupBy.head/GroupBy.tail支持分组位置索引负数参数现在正确返回相对组尾/组首的范围此前返回空帧对齐 pandas 1.4。groupby.apply的 schema 推断先推断 pandas 类型以尽量保证 pandasdtype的准确性。Series.concat的sort参数被尊重对齐 pandas 1.4。DataFrame.__setitem__会复制并替换既有数组不会被覆盖对齐 pandas 1.4。SparkSession.sql与 pandas API on Spark 的sql新增args参数支持将命名参数绑定为 SQL 字面量。pandas API on Spark 跟随 pandas 2.0部分 API 因 pandas 2.0 变更被弃用或移除请参阅 pandas 官方 release notes。namedtuple monkey-patch 移除默认使用 cloudpickle若相关collections.namedtuple序列化出现问题设环境变量PYSPARK_ENABLE_NAMEDTUPLE_PATCH1恢复旧行为。该开关读取于 python/pyspark/serializers.py 与 python/pyspark/serializers.py。从 PySpark 3.2 升级到 3.3pyspark.pandas.sql遵循标准 Python 字符串格式化语法恢复旧行为设环境变量PYSPARK_PANDAS_SQL_LEGACY1。该开关读取于 python/pyspark/pandas/sql_formatter.py开启后走已弃用的sql_processor路径并发出FutureWarning。pandas API on Spark 的DataFrame.drop支持按index删行且默认改为按索引删行而非按列删行。Pandas 最低版本要求从 0.23.2 提升到 1.0.5。SQL 数据类型的repr返回值变更eval该返回值可得到等价对象。从 PySpark 3.1 升级到 3.2sql、ml、spark_on_pandas 模块的方法在参数类型不适配时抛TypeError而非ValueError。Python UDF、pandas UDF 与 pandas 函数 API 的 traceback 默认简化不再包含内部 Python worker 的 traceback。恢复 3.2 之前打印 worker traceback 的行为设spark.sql.execution.pyspark.udf.simplifiedTraceback.enabledfalse。配套测试见 python/pyspark/sql/tests/streaming/test_streaming.py。Pinned thread 模式默认开启将每个 Python 线程映射到对应的 JVM 线程。此前多个 Python 线程可复用同一个 JVM 线程导致 JVM 线程本地变量被多个 Python 线程共享。注意现在推荐配合pyspark.InheritableThread或pyspark.inheritable_thread_target使用以便 Python 线程正确继承 JVM 线程的可继承属性如本地属性并避免潜在资源泄漏。恢复 3.2 之前行为设环境变量PYSPARK_PIN_THREADfalse。默认值为true读取逻辑见 python/pyspark/java_gateway.py——开启时使用 py4j 的ClientServer网关实现线程固定关闭时退化为普通JavaGateway。相关测试见 python/pyspark/tests/test_pin_thread.py。从 PySpark 2.4 升级到 3.0pandas 相关功能toPandas、从 pandas DataFrame 建表等要求 pandas 0.23.2。PyArrow 相关功能pandas_udf、toPandas、createDataFrame配合spark.sql.execution.arrow.enabledtrue等要求 PyArrow 0.12.1。SparkSession.builder.getOrCreate()不再尝试用 builder 指定的配置更新既有SparkContext的SparkConfSparkContext被所有SparkSession共享不应更新。如需更新须在创建SparkSession之前更新。Arrow 优化开启且 Arrow 版本高于 0.11.0 时Arrow 可在序列化过程中对 pandas.Series 转 Arrow 数组执行安全类型转换。通过spark.sql.execution.pandas.convertToArrowArraySafely开启3.0 时默认false4.1 起默认true。不同 PyArrow 版本下的行为PyArrow 版本整数溢出浮点截断0.11.0 及以下抛错静默允许 0.11.0 且convertToArrowArraySafelyfalse静默溢出静默允许 0.11.0 且convertToArrowArraySafelytrue抛错抛错createDataFrame(..., verifySchemaTrue)现在同时校验LongType此前不校验溢出时得到None禁用校验可设verifySchemaFalse。Python 3.6 下用命名参数构造Row时字段名不再按字母序排序按输入顺序排列。恢复 2.4 的排序行为对 driver 与所有 executor 一致地设置环境变量PYSPARK_ROW_FIELD_SORTING_ENABLEDtrue必须全集群一致否则可能失败或产生错误结果。Python 3.6 以下版本只能按字母序排序。pyspark.ml.param.shared.Has*mixin 不再提供set*(self, value)方法改用self.set(self.*, value)。从 PySpark 2.3 升级到 2.4Arrow 优化开启时此前toPandas在无法使用 Arrow 时直接失败而createDataFrame从 pandas DataFrame允许回退到非优化路径。现在两者默认都允许回退可用spark.sql.execution.arrow.fallback.enabled关闭回退。相关测试见 python/pyspark/sql/tests/arrow/test_arrow.py。从 PySpark 2.3.0 升级到 2.3.1Arrow 功能含pandas_udf以及spark.sql.execution.arrow.enabledtrue下的toPandas()/createDataFrame()自 2.3.1 起标记为实验性仍在演进暂不建议用于生产环境。从 PySpark 2.2 升级到 2.3pandas 相关功能要求 pandas 0.19.2。pandas 相关功能的时间戳行为改为尊重会话时区恢复旧行为设spark.sql.execution.pandas.respectSessionTimeZonefalse。na.fill()/fillna支持布尔值替换 null此前直接忽略并返回原 DataFrame。df.replace在to_replace不是字典时不再允许省略value此前其他情况可省略且默认None易产生误解与错误。从 PySpark 1.4 升级到 1.5Python 中字符串到列的解析支持用点号.限定列或访问嵌套值如df[table.column.nestedField]。若列名本身包含点号必须用反引号转义如table.column.with.dots.nested。DataFrame.withColumn支持新增列或替换同名既有列。从 PySpark 1.0-1.2 升级到 1.3Python 中使用 DataType 必须显式构造实例如StringType()不再引用单例。关键配置与环境变量速查以下开关贯穿多个版本的迁移汇总如下默认值以当前仓库源码为准SQL 配置通过spark.conf.set(...)或 spark-defaults.conf 设置配置项作用默认引入版本spark.sql.execution.arrow.pyspark.enabledPySpark 与 JVM 列式数据交换是否使用 Arrow作用于toPandas与 pandas/NumPy 建表true4.2 起3.0.0回退到已弃用的spark.sql.execution.arrow.enabledspark.sql.execution.pythonUDF.arrow.enabled常规 Python UDF 是否启用 Arrow 优化true4.2 起3.4.0spark.sql.execution.pythonUDTF.arrow.enabled常规 Python UDTF 是否启用 Arrow 优化true4.2 起3.5.0spark.sql.execution.pyspark.binaryAsBytesBinaryType是否一致映射为 Pythonbytestrue4.1.0spark.sql.legacy.execution.pythonUDF.pandas.conversion.enabledArrow UDF 是否保留 4.1.0 前的多余 pandas 转换false4.1.0内部spark.sql.legacy.execution.pythonUDTF.pandas.conversion.enabledArrow UDTF 是否保留 4.1.0 前的多余 pandas 转换false4.1.0内部spark.sql.execution.pandas.convertToArrowArraySafelyArrow 序列化是否对溢出等不安全转换报错true3.0.0内部spark.sql.pyspark.legacy.inferArrayTypeFromFirstElement.enabledArray 元素类型是否仅从首元素推断false3.4.0内部spark.sql.pyspark.legacy.inferMapTypeFromFirstPair.enabledMap 键值类型是否仅从首个非空对推断false4.0.0内部spark.sql.execution.pyspark.udf.simplifiedTraceback.enabledUDF 是否显示简化 tracebacktrue3.2spark.sql.execution.arrow.fallback.enabledArrow 不可用时是否回退到非优化路径true2.4spark.sql.execution.pandas.respectSessionTimeZonepandas 相关功能是否尊重会话时区true2.3spark.sql.execution.pythonUDF.arrow.legacy.fallbackOnUDTArrow UDF 遇到 UDT 时是否回退常规 UDFfalse4.1spark.sql.execution.pythonUDF.mapInBatch.legacy.acceptAnyIterable.enabledmapInPandas/mapInArrow是否接受任意可迭代返回值false4.3.0内部环境变量须在启动前设置涉及 executor 的须 driver 与 executor 一致环境变量作用默认PYSPARK_PIN_THREAD是否启用 Python 线程到 JVM 线程的固定映射truePYSPARK_ROW_FIELD_SORTING_ENABLEDRow命名参数字段是否按字母序排序未设置不排序PYSPARK_ENABLE_NAMEDTUPLE_PATCH是否恢复collections.namedtuplemonkey-patch未设置PYSPARK_PANDAS_SQL_LEGACYpyspark.pandas.sql是否使用 3.3 前格式化行为未设置PYSPARK_VALIDATE_COLUMN_NAME_LEGACYSpark Connect 客户端是否恢复列名急切校验未设置PYSPARK_YM_INTERVAL_LEGACYcollect中YearMonthIntervalType是否返回底层整数未设置源码级佐证这些开关在哪里生效Arrow 数据交换开关spark.sql.execution.arrow.pyspark.enabled定义于 sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala通过.fallbackConf(ARROW_EXECUTION_ENABLED)回退到已弃用的spark.sql.execution.arrow.enabled保证旧配置仍生效。pandas-on-Spark 侧还维护了常量SPARK_CONF_ARROW_ENABLED见 python/pyspark/pandas/utils.py。UDF/UDTF Arrow 开关spark.sql.execution.pythonUDF.arrow.enabled与spark.sql.execution.pythonUDTF.arrow.enabled分别在 SQLConf.scala 与 SQLConf.scala 定义Spark Connect 客户端在 python/pyspark/sql/connect/udf.py 与 python/pyspark/sql/connect/udtf.py 中读取同一配置判断优化路径。安全类型转换spark.sql.execution.pandas.convertToArrowArraySafely在序列化时控制pa.Array.from_pandas(..., safesafecheck)的safe参数报错信息会引导用户通过该配置关闭 Arrow 安全类型检查见 python/pyspark/sql/conversion.py。线程固定模式PYSPARK_PIN_THREAD决定 PySpark 使用 py4j 的ClientServer还是普通JavaGateway连接 JVMpython/pyspark/java_gateway.pypyspark.InheritableThread与pyspark.inheritable_thread_target的相关逻辑见 python/pyspark/util.py、python/pyspark/util.py、python/pyspark/util.py独立测试类PinThreadTests见 python/pyspark/tests/test_pin_thread.py。schema 推断开关spark.sql.pyspark.legacy.inferArrayTypeFromFirstElement.enabled与spark.sql.pyspark.legacy.inferMapTypeFromFirstPair.enabled均标记为.internal()SQLConf.scalaSpark Connect 会话在 python/pyspark/sql/connect/session.py 与 python/pyspark/sql/connect/session.py 中同步读取这两个配置。迁移落地建议先升级环境再改代码对照上表核对 Python、PyArrow、Pandas、NumPy 的最低版本要求先满足新版本依赖再运行迁移测试。用开关做灰度多数破坏性行为都提供了配置开关或环境变量。迁移初期可保持旧行为如spark.sql.execution.arrow.pyspark.enabledfalse、spark.sql.execution.pyspark.binaryAsBytesfalse逐项验证后再切换到新默认值。重点回归 Arrow 相关路径4.1/4.2 将 Arrow 设为 UDF、UDTF 与数据交换的默认路径且convertToArrowArraySafely默认开启建议对含整数溢出、浮点截断、nullable 整数列输入的 UDF 与createDataFrame场景做专项测试。关注 pandas API on Spark 的 API 移除清单4.0 集中移除了一批 Koalas 时代的旧 API替换方案在上文逐条列出可用自动化搜索如grep旧方法名先行定位代码中的使用点。集群一致性涉及 executor 的环境变量如PYSPARK_ROW_FIELD_SORTING_ENABLED、PYSPARK_PIN_THREAD必须在 driver 与所有 executor 上保持一致否则可能引发结果不一致或运行失败。仓库内对应的迁移测试如 python/pyspark/sql/tests/arrow/test_arrow.py、python/pyspark/sql/tests/arrow/test_arrow_python_udf.py、python/pyspark/sql/tests/connect/test_connect_collection.py是验证上述行为变更的现成参考迁移后可对照其用例构建自己的回归测试集。赞分享大数据数据分析批处理流处理机器学习图计算【免费下载链接】sparkApache Spark - A unified analytics engine for large-scale data processing项目地址https://gitcode.com/gh_mirrors/sp/spark点击查看免费下载相关推荐HeadJS版本迁移指南从0.97a到2.0.0的完整升级路线HeadJS版本迁移指南从0.97a到2.0.0的完整升级路线 HeadJS作为现代前端开发的革命性工具通过将唯一脚本放在HEAD中的理念彻底改变了J从 Koalas 迁移到 pandas API on SparkPySpark 迁移指南与 API 变化详解从 Koalas 迁移到 pandas API on SparkPySpark 迁移指南与 API 变化详解 导读 本文对应 Apache Spark 仓库中大数据数据分析批处理流处理机器学习图计算Dropwizard 跨版本升级指南从 0.7.x 到 5.0.x 的完整迁移路线图Dropwizard 跨版本升级指南从 0.7.x 到 5.0.x 的完整迁移路线图 本指南以 Dropwizard 官方手册中的 Upgrade Notes后端Web框架上一篇Conky 集成 spdlog 实战指南快速 C 日志库的安装、特性与工程化落地下一篇深入解析 language-server-protocol 3.19 的 publishDiagnostics 通知LSP 诊断推送机制完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考