迁移指南: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 特定的内容。许多 SQL 迁移内容在将 SparkR 迁移到更高版本时也适用。请参考 迁移指南:SQL、Dataset 和 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
中最后一层的尺寸是否有效。例如,如果训练数据只有两个标签,则以前layers
参数(如c(1, 3)
)不会导致错误,现在会。
从 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
- 以前,
stringsAsFactors
参数在collect
中被忽略,例如,在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
支持。要为执行器设置环境,请使用前缀“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 添加新列或替换同名现有列。