翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
でカーネルを強化する 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 種類のバリエーションがあります。
-
行 magic - これら magic コマンドは 1 つの
%
プレフィックスで表され、1 行のコードで動作します。 -
セル magic - これら magic コマンドは二重
%%
プレフィックスで表され、複数のコード行で動作します。
使用可能なすべての の場合 magic「」を参照してくださいリスト magic and Sparkmagic commands。
考慮事項と制限事項
-
EMR サーバーレスは の実行
%%sh
をサポートしていませんspark-submit
。EMR ノートブックをサポートしていません magic。 -
EMR EKS クラスター上の Amazon は をサポートしていません 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 and Sparkmagic commands
次のコマンドを使用して、使用可能な を一覧表示します。magic コマンド:
-
%lsmagic
現在利用可能なすべての を一覧表示する magic 関数。 -
%%help
現在利用可能な Spark 関連のリスト magic によって提供される 関数 Sparkmagic パッケージ。
%%configure
を使用して Spark を設定する
最も便利な の 1 つ 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 ノートブックをインストールする前に magicで、次のタスクを実行します。
-
クラスターEC2インスタンスのサービスロール (EC2 インスタンスプロファイル) が Amazon S3 の読み取りアクセス権を備えていることを確認してください。
EMR_EC2_DefaultRole
とAmazonElasticMapReduceforEC2Role
マネージドポリシーを使用すると、この要件が満たされます。カスタムロールまたはポリシーを使用する場合は、必要な S3 アクセス許可があることを確認してください。注記
EMR ノートブック magicは、ノートブックユーザーとしてクラスターで実行され、EC2インスタンスプロファイルを使用して Amazon S3 とやり取りします。Workspace ディレクトリを EMRクラスターにマウントすると、そのクラスターにアタッチする権限を持つすべての Workspace とEMRノートブックがマウントされたディレクトリにアクセスできます。
デフォルトでは、ディレクトリは読み取り専用としてマウントされます。
s3fs-fuse
およびgoofys
は読み取り/書き込みマウントを許可しますが、読み取り/書き込みモードでディレクトリをマウントするようにマウントパラメータを変更しないことを強くお勧めします。書き込みアクセスを許可すると、ディレクトリに加えられたすべての変更が S3 バケットに書き込まれます。誤って削除したり上書きしたりしないように、S3 バケットのバージョニングを有効にできます。詳細については、「S3 バケットでのバージョニングの使用」を参照してください。 -
クラスターで次のいずれかのスクリプトを実行して、EMRノートブックの依存関係をインストールします。magic。スクリプトを実行するには、実行中のEMRクラスターが既にある場合、Amazon クラスターでコマンドとスクリプトを実行するの手順に従うカスタムブートストラップアクションの使用か、実行します。
インストールする依存関係を選択できます。s3fs-fuse
と goofys はどちらも FUSE (ユーザースペースのファイルシステム) ツールで、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.
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、オブジェクトをローカルマシンにダウンロードできます。例えば、コードが Amazon S3 generate_s3_download_url
に書き込むSQLクエリの結果をダウンロードするには、 を実行します。 Amazon S3
署名付き 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
magicEMR ノートブックは、ローカルネットワークに中断が発生した場合でも、実行されたセルからの出力をキャプチャします。 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 以降をインストールします。