スコアリングコード用のApache Spark API¶
スコアリングコード用のSpark APIライブラリは、DataRobotのスコアリングコードJARをSparkクラスターに統合します。 これは、 PySpark APIおよび Spark Scala APIとして使用できます。
以前のバージョンでは、スコアリングコード用のSpark APIは、複数のライブラリで構成され、それぞれが特異なSparkバージョンをサポートしていました。 現在、1つのライブラリにより、サポート済みのすべてのSparkバージョンをサポートしています。 以下のSparkバージョンはこの機能をサポートしています。
- Spark 2.4.1以降
- Spark 3.x
重要
Sparkは、Scala 2.12用にコンパイルする必要があります。
使用非推奨Sparkバージョン固有のライブラリのリストについては、 Deprecated Sparkライブラリのセクションを参照してください。
PySpark API¶
スコアリングコード用のPySpark APIは、PyPIでリリースされた datarobot-predictPythonパッケージに含まれています。 PyPIプロジェクトの説明には、ドキュメントと使用例が含まれています。
Spark Scala API¶
スコアリングコード用のSpark Scala APIは、 scoring-code-spark-apiとしてMavenに公開されています。 詳細については、 APIリファレンスのドキュメントを参照してください。
Spark APIを使用する前に、SparkクラスパスにSpark APIを追加する必要があります。 spark-shellの場合、--packagesパラメーターを使用して、以下のように、Mavenから直接依存関係をロードします。
spark-shell --conf "spark.driver.memory=2g" \
--packages com.datarobot:scoring-code-spark-api:VERSION \
--jars model.jar
CSVファイルのスコアリング¶
以下の例では、CSVファイルをSpark DataFrameにロードして、スコアリングする方法を示しています。
import com.datarobot.prediction.sparkapi.Predictors
val inputDf = spark.read.option("header", true).csv("input_data.csv")
val model = Predictors.getPredictor()
val output = model.transform(inputDf)
output.show()
ランタイムでのモデルのロード¶
以下の例では、spark-shell--jarsパラメーターを使用する代わりに、実行時にモデルのJARファイルをロードする方法を示しています。
PROJECT_ID、MODEL_ID、およびAPI_TOKENを定義します。
val model = Predictors.getPredictorFromServer(
"https://app.datarobot.com/projects/PROJECT_ID/models/MODEL_ID/blueprint","API_TOKEN")
モデルJARファイルおよびMODEL_IDへのパスを定義します。
val model = Predictors.getPredictorFromHdfs("path/to/model.jar", spark, "MODEL_ID")
時系列スコアリング¶
以下の例では、非時系列スコアリングの場合と同様に、transformメソッドで、時系列スコアリングを実行する方法を示しています。 さらに、TimeSeriesOptionsビルダーを使用して、時系列パラメーターをカスタマイズできます。
TimeSeriesOptions ビルダーを介して時系列モデルに追加の引数を提供しない場合、transformメソッドは、自動検出された予測ポイントの予測ポイントを返します。
val model = Predictors.getPredictor()
val forecastPointPredictions = model.transform(timeSeriesDf)
予測ポイントを定義するには、以下のbuildSingleForecastPointRequest()ビルダーメソッドを使用します。
import com.datarobot.prediction.TimeSeriesOptions
val tsOptions = new TimeSeriesOptions.Builder().buildSingleForecastPointRequest("2010-12-05")
val model = Predictors.getPredictor(modelId, tsOptions)
val output = model.transform(inputDf)
過去の予測を返すには、以下のbuildForecastPointRequest()ビルダーメソッドを使用して開始日付と終了日付を定義できます。
val tsOptions = new TimeSeriesOptions.Builder().buildForecastDateRangeRequest("2010-12-05", "2011-01-02")
完全なリファレンスについては、 TimeSeriesOptions javadocを参照してください。
廃止されたバッジ¶
2.4.1以前のSparkバージョン、または2.12以前のScala用にコンパイルされたSparkのサポートは、使用非推奨となります。 必要に応じて、Maven Centralで公開されている使用非推奨のライブラリにアクセスできますが、それ以上の更新は行われません。
以下のライブラリは、使用非推奨となっています。
| 名前 | Sparkバージョン | Scalaバージョン |
|---|---|---|
| scoring-code-spark-api_1.6.0 | 1.6.0 | 2.10 |
| scoring-code-spark-api_2.4.3 | 2.4.3 | 2.11 |
| scoring-code-spark-api_3.0.0 | 3.0.0 | 2.12 |