翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
でカーネルを強化する magic EMR Studio の コマンド
概要
EMR Studio とEMRノートブックのサポート magic コマンド。マジック コマンド、または magicは、IPythonカーネルが提供する機能強化であり、データの実行と分析に役立ちます。IPython は、Python で構築されたインタラクティブなシェル環境です。
Amazon はEMR、Sparkmagic、Spark 関連のカーネル (PySpark、SparkR 、および Scala カーネル) に特定の を提供するパッケージ magic コマンドと は、クラスターで Livy を使用して Spark ジョブを送信します。
以下を使用できます..。magic EMR ノートブックに Python カーネルがある限り、 コマンドを使用します。同様に、Spark 関連のカーネルは Sparkmagic コマンド。
Magic コマンド、別名 magicでは、2 つのバリエーションがあります。
-
行 magics – これら magic コマンドは 1 つの
%
プレフィックスで示され、1 行のコードで動作します。 -
セル magics – これら magic コマンドは二重
%%
プレフィックスで示され、複数のコード行で動作します。
利用可能なすべての の場合 magic「」を参照してくださいリスト magic また、Sparkmagic commands。
考慮事項と制約事項
-
EMR Serverless は の実行
%%sh
をサポートしていませんspark-submit
。EMR ノートブックをサポートしていない magic。 -
Amazon EMR on EKSクラスターは をサポートしていません Sparkmagic EMR Studio の コマンド。これは、マネージドエンドポイントで使用する Spark カーネルが Kubernetes に組み込まれており、 ではサポートされていないためです。Sparkmagic と Livy。次の例に示すように、Spark 設定を回避策として SparkContext オブジェクトに直接設定できます。
spark.conf.set("spark.driver.maxResultSize", '6g')
-
以下のようになります magic コマンドとアクションは、 では禁止されています AWS。
-
%alias
-
%alias_magic
-
%automagic
-
%macro
-
proxy_user
を使用した%configure
の変更 -
KERNEL_USERNAME
または%env
を使用した%set_env
の変更
-
リスト magic また、Sparkmagic commands
次のコマンドを使用して、使用可能な を一覧表示します。magic コマンド:
-
%lsmagic
現在利用可能なすべての を一覧表示します magic 関数。 -
%%help
現在利用可能な Spark 関連のリスト magic が提供する関数 Sparkmagic パッケージ。
%%configure
を使用して Spark を設定する
最も便利な Sparkmagic コマンドは、セッション作成パラメータを設定する %%configure
コマンドです。conf
設定を使用すると、Apache Spark の設定ドキュメント
例 Maven リポジトリまたは Amazon S3 からEMRノートブックに外部JARファイルを追加する
次のアプローチを使用して、 でサポートされている Spark 関連のカーネルに外部JARファイルの依存関係を追加できます。Sparkmagic.
%%configure -f {"conf": { "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3", "spark.jars": "s3://
amzn-s3-demo-bucket
/my-jar.jar" } }
例 : Hudi を設定する
ノートブックエディタを使用して、Hudi を使用するようにEMRノートブックを設定できます。
%%configure { "conf": { "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.hive.convertMetastoreParquet":"false" } }
%%sh
を使用して spark-submit
を実行する
%%sh
magic は、アタッチされたクラスターのインスタンスのサブプロセスでシェルコマンドを実行します。通常、Spark 関連のカーネルのいずれかを使用して、アタッチされたクラスターで Spark アプリケーションを実行します。ただし、Python カーネルを使用して Spark アプリケーションを送信する場合は、以下を使用できます。magic、バケット名を小文字のバケット名に置き換えます。
%%sh spark-submit --master yarn --deploy-mode cluster s3://
amzn-s3-demo-bucket
/test.py
この例では、クラスターは、s3://
の場所にアクセスできる必要があります。アクセスできないと、コマンドは失敗します。amzn-s3-demo-bucket
/test.py
では、任意の Linux コマンドを使用できます。 %%sh
magic。 Spark またはYARNコマンドを実行する場合は、次のいずれかのオプションを使用して emr-notebook
Hadoop ユーザーを作成し、コマンドを実行するアクセス許可をユーザーに付与します。
-
次のコマンドを実行して、新しいユーザーを明示的に作成できます。
hadoop fs -mkdir /user/emr-notebook hadoop fs -chown emr-notebook /user/emr-notebook
-
Livy でユーザー偽装を有効にすることができます。これにより、ユーザーが自動的に作成されます。詳細については、「Spark ユーザーおよびジョブのアクティビティをモニタリングするためのユーザー偽装の有効化」を参照してください。
%%display
を使用して Spark データフレームを視覚化する
を使用できます。 %%display
magic Spark データフレームを視覚化します。これを使用するには magic、次のコマンドを実行します。
%%display df
以下の図のように、結果を表形式で表示することを選択します。
5 種類のグラフでデータを視覚化することもできます。オプションには、円グラフ、散布図、折れ線グラフ、面グラフ、棒グラフがあります。
EMR ノートブックの使用 magics
Amazon EMRでは、次のEMRノートブックを提供しています。magicPython3 および Spark ベースのカーネルで使用できる :
-
%mount_workspace_dir
– Workspace 内の他のファイルからコードをインポートして実行できるように、Workspace ディレクトリをクラスターにマウントします。注記
%mount_workspace_dir
では、Python 3 カーネルのみがローカルファイルシステムにアクセスできます。Spark エグゼキューターは、このカーネルではマウントされたディレクトリにアクセスできません。 -
%umount_workspace_dir
– Workspace ディレクトリをクラスターからアンマウントします -
%generate_s3_download_url
- Amazon S3 オブジェクトのノートブック出力に一時的なダウンロードリンクを生成します。
前提条件
EMR Notebooks をインストールする前に magicでは、次のタスクを実行します。
-
クラスターEC2インスタンスのサービスロール (EC2インスタンスプロファイル) が Amazon S3 の読み取りアクセス権を備えていることを確認してください。
EMR_EC2_DefaultRole
とAmazonElasticMapReduceforEC2Role
マネージドポリシーを使用すると、この要件が満たされます。カスタムロールまたはポリシーを使用する場合は、必要な S3 アクセス許可があることを確認してください。注記
EMR ノートブック magicはノートブックユーザーとしてクラスターで実行され、EC2インスタンスプロファイルを使用して Amazon S3 とやり取りします。Workspace ディレクトリをEMRクラスターにマウントすると、そのクラスターにアタッチする権限を持つすべての Workspaces とEMRノートブックがマウントされたディレクトリにアクセスできます。
デフォルトでは、ディレクトリは読み取り専用としてマウントされます。
s3fs-fuse
およびgoofys
は読み取り/書き込みマウントを許可しますが、読み取り/書き込みモードでディレクトリをマウントするようにマウントパラメータを変更しないことを強くお勧めします。書き込みアクセスを許可すると、ディレクトリに加えられたすべての変更が S3 バケットに書き込まれます。誤って削除したり上書きしたりしないように、S3 バケットのバージョニングを有効にできます。詳細については、「S3 バケットでのバージョニングの使用」を参照してください。 -
クラスターで次のいずれかのスクリプトを実行して、EMRノートブックの依存関係をインストールします。magic。スクリプトを実行するには、実行中のEMRクラスターが既にある場合、Amazon クラスターでコマンドとスクリプトを実行する の手順に従うカスタムブートストラップアクションの使用か、実行します。
インストールする依存関係を選択できます。s3fs-fuse
と goofys はどちらも FUSE (Userspace のファイルシステム) ツールで、Amazon S3 バケットをクラスター上のローカルファイルシステムとしてマウントできます。この s3fs
ツールは、 のようなエクスペリエンスを提供しますPOSIX。このgoofys
ツールは、POSIX準拠のファイルシステムよりもパフォーマンスを好む場合に適しています。Amazon EMR7.x シリーズは、EPELリポジトリをサポートしていない Amazon Linux 2023 を使用します。Amazon 7.x EMR を実行している場合は、s3fs-fuse GitHub
の指示に従って をインストールします s3fs-fuse
。5.x または 6.x シリーズを使用する場合は、次のコマンドを使用して をインストールしますs3fs-fuse
。#!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y
または
#!/bin/sh # Install the goofys dependency for EMR Notebooks magics sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/ sudo chmod ugo+x /usr/bin/goofys
EMR ノートブックのインストール magics
注記
Amazon EMRリリース 6.0~6.9.0、および 5.0~5.36.0 では、emr-notebooks-magics
パッケージバージョン 0.2.0 以降のみがサポートされます。 %mount_workspace_dir
magic.
Notebooks EMR をインストールするには、次の手順を実行します。magic。
-
ノートブックで以下のコマンドを実行して
emr-notebooks-magics
パッケージをインストールします。 %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
-
カーネルを再起動してEMRノートブックをロードする magic。
-
次のコマンドを使用してインストールを検証します。これにより、
%mount_workspace_dir
の出力ヘルプテキストが表示されます。%mount_workspace_dir?
%mount_workspace_dir
を使用してWorkspace ディレクトリをマウントする
%mount_workspace_dir
magic では、Workspace ディレクトリをEMRクラスターにマウントして、ディレクトリに保存されている他のファイル、モジュール、またはパッケージをインポートして実行できます。
次の例では、Workspace ディレクトリ全体をクラスターにマウントし、オプションの
ディレクトリのマウントに goofys を使用する引数。<--fuse-type>
%mount_workspace_dir .
<--fuse-type goofys>
Workspace ディレクトリがマウントされていることを確認するには、次の例のように、ls
コマンドを使用して現在の作業ディレクトリを表示します。出力には、Workspace 内のすべてのファイルが表示されます。
%%sh ls
Workspace での変更が完了したら、次のコマンドを使用して Workspace ディレクトリをアンマウントします。
注記
Workspace が停止またはデタッチされた場合でも、Workspace ディレクトリはクラスターにマウントされたままです。Workspace ディレクトリを明示的にアンマウントする必要があります。
%umount_workspace_dir
%generate_s3_download_url
を使用して Amazon S3 オブジェクトをダウンロードする
generate_s3_download_url
コマンドは、Amazon S3 に保存されているオブジェクトURLの署名付きを作成します。署名付き を使用してURL、オブジェクトをローカルマシンにダウンロードできます。例えば、 generate_s3_download_url
を実行して、コードが Amazon S3 に書き込むSQLクエリの結果をダウンロードできます。
署名付きURLはデフォルトで 60 分間有効です。有効期限は、--expires-in
フラグに秒数を指定することで変更できます。例えば、 URLは 30 分間有効な --expires-in 1800
を作成します。
次の例では、完全な Amazon S3 パス
を指定して、オブジェクトのダウンロードリンクを生成しています。s3://EXAMPLE-DOC-BUCKET/path/to/my/object
%generate_s3_download_url
s3://EXAMPLE-DOC-BUCKET/path/to/my/object
generate_s3_download_url
の使用の詳細については、次のコマンドを実行してヘルプテキストを表示してください。
%generate_s3_download_url?
%execute_notebook
を使用してノートブックをヘッドレスモードで実行する
%execute_notebook
の場合 magicでは、ヘッドレスモードで別のノートブックを実行し、実行した各セルの出力を表示できます。この magic には、Amazon EMRと Amazon がEC2共有するインスタンスロールに対する追加のアクセス許可が必要です。追加のアクセス許可を付与する方法の詳細については、%execute_notebook?
コマンドを実行してください。
長時間かかるジョブの実行中、操作がないためにシステムがスリープ状態になったり、インターネット接続が一時的に切断されたりすることがあります。その結果、ブラウザと Jupyter Server 間の接続が中断される可能性があります。この場合、Jupyter Server から実行して送信したセルの出力が失われる可能性があります。
でヘッドレスモードでノートブックを実行する場合 %execute_notebook
magic、EMRノートブックは、ローカルネットワークに中断が発生した場合でも、実行されたセルから出力をキャプチャします。EMR ノートブックは、実行したノートブックと同じ名前の新しいノートブックに出力を段階的に保存します。EMR ノートブックは、ノートブックをワークスペース内の新しいフォルダに配置します。ヘッドレス実行は同じクラスターで行われ、EMR_Notebook_DefaultRole
サービスロールを使用しますが、引数を追加することでデフォルト値を変更できます。
ノートブックをヘッドレスモードで実行するには、以下のコマンドを使用します。
%execute_notebook
<relative-file-path>
ヘッドレス実行のクラスター ID とサービスロールを指定するには、以下のコマンドを使用します。
%execute_notebook
<notebook_name>
.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
Amazon EMRと Amazon がインスタンスロールEC2を共有する場合、ロールには次の追加のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:StartNotebookExecution", "elasticmapreduce:DescribeNotebookExecution", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::<AccoundId>:role/EMR_Notebooks_DefaultRole" } ] }
注記
%execute_notebook
を使用するには magic、 emr-notebooks-magics
パッケージ、バージョン 0.2.3 以降をインストールします。