LoginSignup
1
1

More than 1 year has passed since last update.

【1時間で実装】 Amazon SageMaker Studio の PySpark 実行環境

Last updated at Posted at 2021-05-06

はじめに

Sagemaker studio でとりあえず Pyspark 試したい。。
でも実装するには IAM とか VPC とか細かく設定しなきゃいけないっぽい。。しかも後ろで EMR が動いてるとかもう無理。。

そう思って断念しかけたのですが、とても便利なテンプレートがありました!!!

こちらの記事で紹介されている CloudFormation スタックのテンプレートです。

以下のリンクからスタックの作成画面に飛びます。
https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=blog&templateURL=https://aws-ml-blog.s3.amazonaws.com/artifacts/ml-1954/template.yaml

実装手順

今回はとにかく最小限の労力で SageMaker Studio で PySpark が使える環境を作ることを目的としています。(なので、権限設定やネットワークについてはデフォルトの設定で行います)

スタックの作成

以下のテンプレートリンクをクリックして AWS のコンソールにサインインし、スタックの作成画面を開く(サインインしたら自動で遷移します)。「次へ」をクリック。
https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=blog&templateURL=https://aws-ml-blog.s3.amazonaws.com/artifacts/ml-1954/template.yaml

図1.png

スタックの詳細を指定の画面。「次へ」をクリック。

図2.png

スタックオプションの設定の画面。「次へ」をクリック。

図3.png

レビューの画面まで来たら一番下までスクロール。

図4.png

「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」にチェックを入れ、「スタックの作成」をクリック。

図5.png

スタックの作成の進捗画面です。スタック名の下の「CREATE_IN_PROGRESS」が「CREATE_COMPLETE」になるまで待ちます。大体15分くらいかかります。

図6.png

「CREATE_COMPLETE」になりました。

図7.png

SageMaker Studio の起動

次に SageMaker を開きます。コンソールの検索窓に「sagemaker」と入力し、「Amazon SageMaker」をクリック。

図8.png

「Open SageMaker Studio」をクリック。

図9.png

「defaultuser」というユーザーが作成されています。このユーザーの「Studioを開く」をクリック。

図10.png

ブラウザの別タブで Amazon SageMaker Studio が開いたら「File」→「New」→「Terminal」をクリック。

図11.png

ターミナル画面が開きます。

図12.png

ここに以下のコマンドを打ち込みます。(最後の"."忘れに注意)

aws s3 cp s3://aws-ml-blog/artifacts/ml-1954/smstudio-pyspark-hive-sentiment-analysis.ipynb .

左のウインドウにノーブックファイルがコピーされていることが確認できます。これを開きます。

図13.png

ノートブックを開くにはカーネルを選択する必要があります。「PySpark(SparkMagic)」を選択し、「Select」をクリック。

図14.png

マネジメントコンソール画面に戻ってEMRの画面を開きます。検索窓に「emr」と入力し「EMR」をクリック。

図15.png

クラスターが作成されています。クラスターの「ID」をコピーします。

図16.png

次に SageMaker Studio の画面に戻り、以下のように記載されているセルの"x-XXXXXXXXXXXX"の部分を先ほどのクラスターの「ID」に書き換えて実行します。

%%local
emr_cluster_id="x-XXXXXXXXXXXX"

その次に以下のコマンドが書いてあるセルを実行します。

%%local
!sm-sparkmagic connect --cluster-id {emr_cluster_id} --user-name "user1"

ここまでできたら「Launch terminal icon」をクリック。

図17.png

ターミナル画面が開くので"kinit user1"と打ち込んで実行。初期パスワードは"pwd1"に設定されています。

任意の新しいパスワードを入力し、そのパスワードを再度入力します。

図18.png

ノートブックのタブに戻り、「Restart kernel icon」をクリック。

図19.png

カーネルが再起動したら、

%%info

を実行します。以下のような出力がでていればokです。

Current session configs:{'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'}
No active sessions.

PySpark の実行

SparkSessionを生成します。

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

"SparkSession available as 'spark'"と表示されればokです。

サンプルノートの後続のコードを PySpark でやってみます。

dbs = spark.sql("show databases")
dbs.show()

tables = spark.sql("show tables")
tables.show()

実行可能であることが確認できます。

図20.png

おわりに

Amazon SageMaker Studio で PySpark を実行できる環境を作成しました。
テンプレート、ほんとに便利です。。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1