移行ガイド: 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、データセット、およびデータフレーム を参照してください。
SparkR 3.1 から 3.2 へのアップグレード
- 以前は、SparkR がプレーンな R シェルまたは 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` の最後の層のサイズの有効性をチェックしていませんでした。たとえば、トレーニングデータにラベルが 2 つしかない場合、`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 へのアップグレード
- `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.init()` の代わりに、`sparkR.session()` を呼び出して SparkSession をインスタンス化します。インスタンス化されると、現在アクティブな SparkSession が SparkDataFrame 操作に使用されます。
- `sparkExecutorEnv` パラメータは `sparkR.session` ではサポートされていません。executor の環境を設定するには、プレフィックス「spark.executorEnv.VAR_NAME」(例:「spark.executorEnv.PATH」)を使用して Spark 設定プロパティを設定します。
- `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` でした。Scala API と一致させるため、Spark 1.6.0 で `error` に変更されました。
- SparkSQL は R の `NA` を `null` に変換し、その逆も同様です。
- 1.6.1 以降、SparkR の withColumn メソッドは、DataFrame に新しい列を追加したり、同じ名前の既存の列を置き換えたりすることをサポートしています。