Sparkクラスターでの特徴量探索SQLの使用¶
このアクセラレーターでは、DockerベースのSparkクラスターで特徴量探索SQLを実行する例を概説します。 DockerでSparkクラスターを設定し、カスタムユーザー定義関数(UDF)を登録し、複数のデータセットで特徴量エンジニアリングのための複雑なSQLクエリーを実行するプロセスについて説明します。 同じアプローチは、GCP Dataproc、Amazon EMR、Cloudera CDPなどの他のSpark環境にも適用でき、さまざまなSparkプラットフォーム上で特徴量探索を実行する柔軟性を提供します。
問題のフレーミング¶
特徴量は通常、複数のデータアセットに分散しています。 これらのデータアセットをまとめるには、それらを結合してから、さらに機械学習モデルを実行するので、多くの作業が必要となります。 データセットの粒度が異なる場合、データを適切に結合するには集約処理が必要になるため、さらに困難です。
特徴量探索では、データセットを結合および集計する手順を自動化することで、この問題を解決します。 データセットの結合方法を定義した後、特徴量の生成とモデリングをDataRobotに任せます。
特徴量探索はSparkを使用して結合と集約を実行し、プロセスの最後にSpark SQLを生成します。 場合によっては、より大規模なデータセットを柔軟かつスケーラブルに処理するために、Spark SQLを他のSparkクラスターで実行する場合があります。この方法では、データを直接DataRobot環境に読み込む必要がなくなります。 このアプローチでは、よりリソース集約的なタスクのために外部のSparkクラスターを活用することができます。
このアクセラレーターでは、DockerベースのSparkクラスターで特徴量探索SQLを実行する例を提供します。
前提条件¶
- Dockerをインストールする
- Docker composeをインストールする
- 必要なデータセット、UDFs .jar、および環境ファイル(オプション)をダウンロードする
互換性¶
- 特徴量探索SQLは、Spark 3.2(.2)、Spark 3.4(.1)、およびScala 2.12(.15)と互換性があります。 異なるSparkバージョンとScalaバージョンを使用すると、エラーが発生する可能性があります。
- UDFs .jarおよび環境ファイルは、以下の場所から取得できます。 環境ファイルは、日本語テキストを扱う場合にのみ必要となります。
- Spark 3.2.2
- Spark 3.4.1
- 具体的なSparkのバージョンは、 こちらから入手できます。
ファイル概要¶
ファイル構造の概要は以下の通りです。
.
├── Using Feature Discovery SQL in other Spark clusters.ipynb
├── apps
│ ├── DataRobotRunSSSQL.py
│ ├── LC_FD_SQL.sql
│ ├── LC_profile.csv
│ ├── LC_train.csv
│ └── LC_transactions.csv
├── data
├── libs
│ ├── spark-udf-assembly-0.1.0.jar
│ └── venv.tar.gz
├── docker-compose.yml
├── Dockerfile
├── start-spark.sh
└── utils.py
Using Feature Discovery SQL in other Spark clusters.ipynb
は、Docker上の新しいSparkクラスターで特徴量探索SQLを実行するためのフレームワークを提供するノートブックです。docker-compose.yml
、start-spark.sh
、Dockerfile
は、SparkでDockerコンテナを構築して起動するためにDockerが使用するファイルです。utils.py
には、データセットとUDFs jarをダウンロードするためのヘルパー関数が含まれています。app
ディレクトリには以下が含まれます。- Spark SQL(
.sql
拡張子付きのファイル) - データセット(
.csv
拡張子付きのファイル) - SQLを解析して実行するヘルパー関数(
.py
拡張子付きのファイル) libs
ディレクトリには以下が含まれます。- ユーザー定義関数(UDF)JARファイル
- 環境ファイル(データセットに日本語のテキストが含まれている場合にのみ必要で、Mecabトークナイザーで処理する必要があります)
-
出力結果の保存に使用されるため、
data
ディレクトリは空です。 -
データセット、UDFs jar、環境ファイルは、初期状態では利用できないことに注意してください。 アクセラレーターで説明されているように、それらはダウンロードする必要があります。