迁移指南:SparkR (R on Spark)
- 从 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、Datasets 和 DataFrame。
从 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
参数被错误地减 1 并视为基于 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
的模型摘要输出已添加对数似然作为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
支持。要为 executors 设置环境,请设置带有前缀 “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
。 - 以下函数不再需要
sc
SparkContext 参数:setJobGroup
、clearJobGroup
、cancelJobGroup
从 SparkR 1.5 升级到 1.6
- 在 Spark 1.6.0 之前,写入的默认模式是
append
。在 Spark 1.6.0 中,它已更改为error
以匹配 Scala API。 - SparkSQL 将 R 中的
NA
转换为null
,反之亦然。 - 自 1.6.1 起,SparkR 中的 withColumn 方法支持向 DataFrame 添加新列或替换同名的现有列。