迁移指南:SparkR(基于 Spark 的 R)
- 从 SparkR 3.5 升级到 4.0
- 从 SparkR 3.1 升级到 3.2
- 从 SparkR 2.4 升级到 3.0
- 从 SparkR 2.3 升级到 2.4
- 从 SparkR 2.3 升级到 2.3.1 及更高版本
- 从 SparkR 2.2 升级到 2.3
- 从 SparkR 2.1 升级到 2.2
- 从 SparkR 2.0 升级到 3.1
- 从 SparkR 1.6 升级到 2.0
- 从 SparkR 1.5 升级到 1.6
请注意,本迁移指南描述了 SparkR 特有的项。当将 SparkR 迁移到更高版本时,许多 SQL 迁移的项也适用。请参阅迁移指南:SQL、Dataset 和 DataFrame。
从 SparkR 3.5 升级到 4.0
- 在 Spark 4.0 中,SparkR 已被弃用,并将在未来版本中移除。
从 SparkR 3.1 升级到 3.2
- 此前,当 SparkR 在普通的 R shell 或 Rscript 中运行且找不到 Spark 发行版时,SparkR 会自动下载并安装 Spark 发行版到用户缓存目录以完成 SparkR 的安装。现在,它会询问用户是否要下载和安装。要恢复之前的行为,请将
SPARKR_ASK_INSTALLATION环境变量设置为FALSE。
从 SparkR 2.4 升级到 3.0
- 已弃用的方法
parquetFile、saveAsParquetFile、jsonFile、jsonRDD已被移除。请改用read.parquet、write.parquet、read.json。
从 SparkR 2.3 升级到 2.4
- 此前,我们没有检查
spark.mlp中最后一层大小的有效性。例如,如果训练数据只有两个标签,像c(1, 3)这样的layers参数以前不会导致错误,但现在会。
从 SparkR 2.3 升级到 2.3.1 及更高版本
- 在 SparkR 2.3.0 及更早版本中,
substr方法的start参数被错误地减去了一并被视为基于 0 的索引。这可能导致不一致的子字符串结果,并且与 R 中substr的行为不匹配。在 2.3.1 及更高版本中,此问题已修复,substr方法的start参数现在是基于 1 的索引。例如,substr(lit('abcdef'), 2, 4))在 SparkR 2.3.0 中会得到abc,而在 SparkR 2.3.1 中则会得到bcd。
从 SparkR 2.2 升级到 2.3
- 此前,在与
collect结合使用时,stringsAsFactors参数会被忽略,例如在collect(createDataFrame(iris), stringsAsFactors = TRUE))中。此问题已得到纠正。 - 对于
summary,已添加用于计算统计量的选项。其输出已从describe的输出中更改。 - 如果 SparkR 包和 Spark JVM 的版本不匹配,可能会引发警告。
从 SparkR 2.1 升级到 2.2
- 已向
createDataFrame和as.DataFrame添加了numPartitions参数。在拆分数据时,分区位置计算已与 Scala 中的计算方式保持一致。 - 方法
createExternalTable已弃用,由createTable代替。这两种方法都可以用于创建外部表或管理表。还添加了额外的目录方法。 - 默认情况下,derby.log 现在保存到
tempdir()。当使用将enableHiveSupport设置为TRUE的方式实例化 SparkSession 时,会创建此目录。 spark.lda此前未能正确设置优化器。此问题已得到纠正。- 多个模型摘要输出已更新,将
coefficients设置为matrix类型。这包括spark.logit、spark.kmeans、spark.glm。spark.gaussianMixture的模型摘要输出已添加对数似然 (log-likelihood) 作为loglik。
从 SparkR 2.0 升级到 3.1
join默认不再执行笛卡尔积,请改用crossJoin。
从 SparkR 1.6 升级到 2.0
- 方法
table已被移除,并由tableToDF代替。 - 类
DataFrame已重命名为SparkDataFrame以避免名称冲突。 - Spark 的
SQLContext和HiveContext已弃用,由SparkSession代替。现在应调用sparkR.session()而非sparkR.init()来实例化 SparkSession。一旦完成,当前活跃的 SparkSession 将用于 SparkDataFrame 操作。 - 参数
sparkExecutorEnv不受sparkR.session支持。要为执行器设置环境,请设置带有前缀“spark.executorEnv.VAR_NAME”的 Spark 配置属性,例如“spark.executorEnv.PATH”。 - 这些函数不再需要
sqlContext参数:createDataFrame、as.DataFrame、read.json、jsonFile、read.parquet、parquetFile、read.text、sql、tables、tableNames、cacheTable、uncacheTable、clearCache、dropTempTable、read.df、loadDF、createExternalTable。 - 方法
registerTempTable已弃用,由createOrReplaceTempView代替。 - 方法
dropTempTable已弃用,由dropTempView代替。 - 这些函数不再需要
scSparkContext 参数:setJobGroup、clearJobGroup、cancelJobGroup。
从 SparkR 1.5 升级到 1.6
- 在 Spark 1.6.0 之前,写入的默认模式是
append。在 Spark 1.6.0 中,为了与 Scala API 匹配,它被更改为error。 - SparkSQL 将 R 中的
NA转换为null,反之亦然。 - 自 1.6.1 版本起,SparkR 中的
withColumn方法支持向 DataFrame 添加新列或替换具有相同名称的现有列。