AWS EMRでSpark RAPIDSを使う

AWSでSpark RAPIDSを使うには

クラウドじゃなくて,自前のサーバでSpark RAPIDSを使うには,Spark RAPIDS一式を準備する必要があります.
マシンがX86ならビルド済みのライブラリがありますが,Power PCだと自前で用意する必要があります.

Spark RAPIDSを試したら凄かった - なぜか数学者にはワイン好きが多い
とてつもなく苦労して,作業時間は2週間かかりました.

しかし,クラウドだと,苦労しません...

AWS-EMR - spark-rapids

The current EMR 6.2.0 release supports Spark version 3.0.1 and RAPIDS Accelerator version 0.2.0. For more details of supported applications, please see the EMR release notes.

EMR6.2ではSpark3.0.1及びRAPIDS Accelarator0.2.0をサポートしています.

Using the Nvidia Spark-RAPIDS Accelerator for Spark - Amazon EMR

With Amazon EMR release version 6.2.0 and later, you can use Nvidia’s RAPIDS Accelerator for Apache Spark plugin to accelerate Spark using EC2 graphics processing unit (GPU) instance types.

EMR6.2以上では,Sparkを高速化するためにEC2 GPUインスタンスを使うNVIDIAのRAPIDS Accelarator Sparkプラグインを使うことができます.

AWSのEMR 6.2(2021/02/09時点の最新バージョン)では,追加のライブラリ等は無しに,設定するだけでSpark RAPIDSを使うことができます.基本的には,設定はこれだけ.

{
	"Classification":"spark",
	"Properties":{
		"enableSparkRapids":"true"
	}
}

実際にはまだ設定はありますが,依存するjarなどの書き並べるような設定は必要なく,EMR側で準備されているところがポイントです.

当然,コアインスタンスにはGPUを積んでいるインスタンスが必要で,現時点の東京リージョンでは,こちらが一番安いインスタンスです.

  インスタンスサイズ vCPU メモリ (GB) GPU ストレージ (GB) オンデマンド料金/時間*
単一の GPU VM g4dn.xlarge 4 16 1 125 0.526 USD

AWSのページによって料金に違いがあるのですが,$0.5--$0.7のようです.EMRのデフォルトのm5.xlargeが$0.124程度のため5倍くらい値段が高いです.

EMR6.2で利用できるSparkはSpark3であり,Spark3はScala2.12を使う必要があります.Scala 2.11ベースのSparkを使っている場合は,バージョンアップを考えると良いと思います.
Spark3からはHadoop 3対応やAccelerator-aware Scheduler,Adaptive Query Execution,Dynamic Partition Pruning など大量の改良点があるので,効率化・高速化が期待できるということで,ぜひバージョンアップを試みると良いのではないでしょうか.