この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、森田です! 先日、AWS Glue on Ray のプレビューが発表されました。
AWS Glue on Ray について
そもそも Ray とは
Pythonの分散並列処理のフレームワークとなっております。 Rayの特徴としては、とてもシンプルに記述できるように設計されており、分散並列処理をPythonで簡単に行うことができます。 以下は、実際にモンテカルロ法で円周率を出すサンプルコードとなっており、とてもシンプルに記述できることがわかります。
sample.py
import ray
import time
from random import random
# Let's start Ray
ray.init()
SAMPLES = 1000000
# By adding the `@ray.remote` decorator, a regular Python function
# becomes a Ray remote function.
@ray.remote
def pi4_sample():
in_count = 0
for _ in range(SAMPLES):
x, y = random(), random()
if x * x + y * y <= 1:
in_count += 1
return in_count
# To invoke this remote function, use the `remote` method.
# This will immediately return an object ref (a future) and then create
# a task that will be executed on a worker process. Get retreives the result.
st = time.time
future = pi4_sample.remote()
pi = ray.get(future) * 4.0 / SAMPLES
print(f'{pi} is an approximation of pi')
AWS Glue on Ray とは
AWS Glue on Rayでは、上記のような処理をAWSのマシンリソースを利用して処理を行うことができるようになります。 今までも AWS Glue には、Apache Spark や PySpark がありましたが、Spark の知識が必要でした。
今回 Glue 上で Ray が利用できるようになったことで、Python と Ray のシンプルな使い方さえわかれば、 AWS Glue を利用することができるようなりました。Pythonエンジニアにとっては結構ありがたいアップデートですね。
実際にやってみた
では、AWS Glue で Rayジョブを実際に動かしてみます。
AWS Glue Studio
まずは、AWS Glue Studio を開き、Jobsを選択します。
すると、以下のようにRay script editor
がでてくるので、こちらを選択し、Create
をクリックします。
コードは、通常通り Ray を利用するようにを書きます。
あとは、Jobs details で名前やIAM ロールの設定を行い、Save
を行い、実際にRun
してみます。
しばらく待つと以下のようにログが確認でき、円周率や実行時間も問題なく出力できていることも確認できました!
最後に
思ってた以上に簡単に書くことができました! 今まで Spark の知識が必要なため、AWS Glue を敬遠していた方は、ぜひ一度 AWS Glue on Ray 試してみてはいかがでしょうか。