迁移指南:SparkR(在Spark上使用R)
- 从 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、数据集和 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参数错误地减去了一,且被视为 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
-
添加了一个
numPartitions参数到createDataFrame和as.DataFrame。在拆分数据时,分区位置的计算已调整为与 Scala 中的一致。 -
方法
createExternalTable已被弃用,取而代之的是createTable。可以调用任一方法来创建外部或管理表。还添加了额外的目录方法。 -
默认情况下,derby.log 现在保存到
tempdir()。当使用enableHiveSupport设置为TRUE实例化 SparkSession 时,tempdir()将会被创建。 -
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替代。 -
scSparkContext 参数不再被以下函数需要: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 添加新列或替换同名的现有列。