spark-submit.sh スクリプト

用意されている spark-submit.sh スクリプトを使用して、クライアント・マシンから Apache Spark アプリケーションを起動および管理できます。このスクリプトは、Apache Spark に用意されている spark-submit スクリプトで使用される構成プロパティーのサブセットを認識します。Db2® Warehouse での Spark アプリケーションの管理に特化したコマンドや環境変数もいくつか追加で導入されています。

制約事項

Db2 Warehouse 用の spark-submit.sh スクリプト:

  • Linux および MacOS オペレーティング・システムでのみ使用できます。
  • 実行できるのは、Scala、Java™、R、Python のアプリケーションのみです。
  • SSL 証明書検証に対応していません (証明書は無視され、ピア検証も実行されません)。

前提条件

spark-submit.sh スクリプトを使用するには、まず cURL コマンド・ライン・ツールをダウンロードしてインストールする必要があります。詳しくは、必要な REST ツールを参照してください。

作業を始める前に

作業を始める前に:

  • コンソールから spark-submit.sh スクリプトをダウンロードします。これを行うには、「接続」 > 「ツールのダウンロード (Download Tools)」 > 「データベース・サポート・ツール (Database support tools)」をクリックします。
  • 以下の export コマンドを 1 つ以上入力して、spark-submit.sh を簡単に使用できるようにする環境変数を設定します。
    export DASHDBURL="https://hostname:8443 # The URL of your dashDB web console.
    export DASHDBUSER=user-name             # Your user name.
    export DASHDBPASS=password              # Your password.
    export DASHDBJSONOUT=YES|NO             # Whether output is to be returned in JSON (YES) or readable (NO) format.
    これらの環境変数を設定すると、spark-submit.sh を使用するたびに同じ情報を指定する必要がなくなります。

構文

構文図を読む構文図をスキップする spark-submit.sh file_nameargumentsapplication options--load-samples--upload-fileappsdefaultlibsgloballibssource_path--useruser_name--download-fileappsdefaultlibsgloballibsfile_name--useruser_name--dirtarget_dir--list-filesappsdefaultlibsgloballibs--useruser_name--delete-fileappsdefaultlibsgloballibspath--useruser_name--cluster-status--app-statussubmission_ID--list-apps--download-cluster-logs--dirtarget_dir--download-app-logssubmission_ID--dirtarget_dir--killsubmission_ID--jsonout--display-cluster-logouterrmasterworkerIP_address--display-app-logappouterrinfosubmission_ID--webui-url--env--version--help
application options
構文図を読む構文図をスキップする--classmain_class--jars,file_name--py-files,file_name--nameapplication_id--namename--lochost--locclient--masterhttps://dashDB_host:8443local

説明

file_name
実行依頼するアプリケーション・コードが入っているファイルの名前。
arguments
実行するアプリケーションの入力として必要な引数を指定します。
--class
Java または Scala で作成したアプリケーション・コードの場合に、このオプションでメイン・クラスの名前を指定します。
--jars
Java または Scala で作成したアプリケーション・コードの場合に、このオプションで、アプリケーションで使用する .jar ファイルのコンマ区切りリストを指定します。それらのファイルは $HOME/spark/apps ディレクトリーになければなりません。
--py-files
Python で作成したアプリケーション・コードの場合に、このオプションで、アプリケーションで使用する .py ファイル、.zip ファイル、.egg ファイルのコンマ区切りリストを指定します。それらのファイルは $HOME/spark/apps ディレクトリーになければなりません。
--name
このオプションでは、起動するアプリケーションに割り当てる名前を指定します。 このオプションを指定しない場合は、クラス名 (Java または Scala のアプリケーションの場合) またはファイル名 (Python または R のアプリケーションの場合) が名前として設定されます。
--loc
このオプションでは、実行依頼するアプリケーション・コードが入っているファイルの場所を指定します。
host
ファイルは Db2 Warehouse ホスト・システムにあります。ファイル名に指定するパス情報は、$HOME/spark/apps ディレクトリーを基準にしたファイルの相対パスです。これはデフォルトです。
client
ファイルはクライアント・システムにあります。ファイル名に指定するパス情報は、現行ディレクトリーを基準にしたファイルの相対パスです。ファイルは、実行依頼の前に自動的に $HOME/spark/apps/temp ディレクトリーにデプロイされます。そのディレクトリーに同名のファイルが存在していた場合は上書きされます。
例えば、以下の 2 つのコマンドでは同じファイル・パス (subdir6/cool.jar) を指定していますが、ファイルの場所は異なります。
  • ファイルはホスト上にある $HOME/spark/apps/subdir6/cool.jar です:
    ./spark-submit.sh --class c.myclass subdir6/cool.jar --loc host
  • ファイルはクライアント上にある ./subdir6/cool.jar です:
    ./spark-submit.sh --class c.myclass subdir6/cool.jar --loc client
--master
アプリケーションを実行依頼する Db2 Warehouse URL が、現在設定されている Db2 Warehouse URL と異なる場合は、このオプションで新しい URL を指定します。ワーカー・スレッドが 1 つのローカル Spark コンテキストでアプリケーションを実行する場合は、local を指定します。
--load-samples
このオプションを使用すると、以下のファイルに入っているサンプル Spark アプリケーション・コードを $HOME/spark/apps ディレクトリーにロードできます。
idax_examples.jar
ReadExample.py
ReadExampleJson.py
ReadWriteExampleKMeans.py
ReadWriteExampleKMeansJson.py
ExceptionExample.py
SqlPredicateExample.py
example_utilities.egg
ReadExample.R
ReadExampleJson.R
ReadWriteExampleKMeans.R
ReadWriteExampleKMeansJson.R
ExceptionExample.R
SqlPredicateExample.R
example_utilities.R
--upload-file
このオプションを使用すると、クライアント・システム上の指定したソース・ディレクトリーにある指定したファイルを、指定したオプションに対応するディレクトリーにアップロードできます。
apps
$HOME/spark/apps ディレクトリーにアップロードします。このターゲットは、特定のアプリケーションに使用するファイルに使用します。これはデフォルト・オプションです。
defaultlibs
$HOME/spark/defaultlibs ディレクトリーにアップロードします。このターゲットは、すべてのアプリケーションに使用するファイルに使用します。
globallibs
/globallibs ディレクトリーにアップロードします。このオプションを使用するには、管理者権限が必要です。このターゲットは、すべてのユーザーのすべてのアプリケーションで使用するファイルに使用します。
--user
管理者は、別のユーザーの代わりにいくつかのコマンドを実行できます。例えば、ユーザーの $HOME/spark/apps ディレクトリーや $HOME/spark/defaultlibs ディレクトリーにファイルをアップロードしたり、そのディレクトリーからファイルをダウンロードしたり削除したりできます。このオプションでは、ユーザーの名前を指定して、どのユーザーの代わりにコマンドを実行するのかを示します。
--download-file
このオプションを使用すると、指定した以下のオプションに対応するディレクトリーにある指定したファイルを、クライアント・システムの現行ディレクトリーにダウンロードできます。
apps
$HOME/spark/apps ディレクトリーからダウンロードします。このターゲットは、Spark に実行依頼するアプリケーション・コードが入っているファイルに使用します。これはデフォルト・オプションです。
defaultlibs
$HOME/spark/defaultlibs ディレクトリーからダウンロードします。このターゲットは、すべてのアプリケーションに使用するファイルに使用します。
globallibs
/globallibs ディレクトリーからダウンロードします。このオプションを使用するには、管理者権限が必要です。このターゲットは、すべてのユーザーのすべてのアプリケーションで使用するファイルに使用します。
--dir
ダウンロードしたファイルを置くクライアント・システム上の既存のディレクトリーの名前。以下に例を示します。
--dir target1
ターゲット・ディレクトリーは、現行ディレクトリーのサブディレクトリーです。
--dir /target1
ターゲット・ディレクトリーは、ルート・ディレクトリーのサブディレクトリーです。
--dir ../target1
ターゲット・ディレクトリーは、現行ディレクトリーと同じレベルにあります。
--list-files
このオプションを使用すると、指定した以下のオプションに対応するディレクトリーにあるファイルのリストを表示できます。
apps
$HOME/spark/apps ディレクトリー内のファイルのリストを表示します。これはデフォルト・オプションです。
defaultlibs
$HOME/spark/defaultlibs ディレクトリー内のファイルのリストを表示します。
globallibs
/globallibs ディレクトリー内のファイルのリストを表示します。このオプションを使用するには、管理者権限が必要です。
--delete-file
このオプションを使用すると、指定した以下のオプションに対応するディレクトリーから指定したファイルを削除できます。
apps
$HOME/spark/apps ディレクトリーから削除します。これはデフォルト・オプションです。
defaultlibs
$HOME/spark/defaultlibs ディレクトリーから削除します。
globallibs
globallibs ディレクトリーから削除します。このオプションを使用するには、管理者権限が必要です。
--cluster-status
このオプションを使用すると、Spark クラスターの状況に関する情報 (現在実行中のアプリケーションの数など) を取得できます。
--app-status
このオプションを使用すると、指定した実行依頼 ID のアプリケーションの状況に関する情報を取得できます。
--list-apps
このオプションを使用すると、現在実行中のすべてのアプリケーション、または、クラスターの最後の始動より後に実行されたすべてのアプリケーションの情報を取得できます。
--download-cluster-logs
このオプションを使用すると、Spark クラスターのマスター・プロセスとワーカー・プロセスの標準エラー・ログと標準出力ログを取得できます。
--download-app-logs
このオプションを使用すると、指定した実行依頼 ID のアプリケーションのすべてのログ・ファイルを取得できます。実行依頼 ID を指定しない場合は、最新のアプリケーションのログ・ファイルが取得されます。
--kill
このオプションを使用すると、指定した実行依頼 ID の実行中のアプリケーションをキャンセルできます。
--jsonout
このオプションは、spark-submit.sh スクリプトの出力を JSON 形式で表示するように指定します。このオプションは、DASHDBJSONOUT 環境変数の設定をオーバーライドします。
--display-cluster-log
このオプションを使用すると、指定した以下のタイプのクラスター・ログ・ファイルの内容を表示できます。
out
標準出力ログ・ファイル。
err
標準エラー・ログ・ファイル。
master
クラスターのマスター・ノードのログ・ファイル。
worker
指定した IP アドレスのワーカー・ノードのログ・ファイル。
--display-app-log
このオプションを使用すると、指定した実行依頼 ID のアプリケーションについて、指定した以下のタイプのログ・ファイルの内容を表示できます。
app
アプリケーション・ログ・ファイル。
out
標準出力ログ・ファイル。
err
標準エラー・ログ・ファイル。
info
アプリケーションの戻りコード、メッセージ、例外ログが入っている情報ログ・ファイル (JSON 形式)。
実行依頼 ID を指定しない場合は、最後に実行依頼したアプリケーションのログ・ファイルが表示されます。
--webui-url
このオプションを使用すると、クラスターのモニターに使用できる Spark Web ユーザー・インターフェース (UI) の URL を取得できます。この URL の名前は次の形式です。
http://dashDB-hostname:port
--env
このオプションを使用すると、以下の環境変数の設定を取得できます。
DASHDBURL
Db2 Warehouse Web コンソールの URL を設定します。
DASHDBUSER
Db2 Warehouse Web コンソールへのログインに使用するユーザー名を設定します。
DASHDBPASS
Db2 Warehouse Web コンソールへのログインに使用するパスワードを設定します。
DASHDBJSONOUT
出力を JSON (YES) 形式で返すか、読み取り可能 (NO) 形式で返すかを指定します。
--version
このオプションを使用すると、spark-submit.sh スクリプトのバージョンと、使用中の Db2 Warehouse のビルド・レベルを表示できます。
--help
このオプションを使用すると、spark-submit.sh スクリプトの構文の説明を表示できます。

出力形式

DASHDBJSONOUT 環境変数を使用して、spark-submit.sh スクリプトから返される出力のデフォルトの形式を指定できます。
DASHDBJSONOUT=YES
JSON 形式で出力を返します。この形式は、他のプログラムでデータを処理する場合に適しています。 例えば、--clusterstatus コマンドの出力は以下のようになります。
{"statusDesc":"Cluster is running.","resultCode":200,"clusters":[{"running_jobs":1,
"monitoring_url":"http:\/\/9.152.63.165:25005","username":"user42"}],"username":
"user42","status":"running"}
DASHDBJSONOUT=NO
読み取り可能な形式で出力を返します。これはデフォルトです。 例えば、--clusterstatus コマンドの出力は以下のようになります。
status: Running
statusDesc: Cluster is running.
running jobs: 1
コマンドを実行するときにこの設定をオーバーライドするには、そのコマンドで --jsonout オプションを指定します。

  • idax_examples.jar ファイルのアプリケーション・コードを基に Scala で作成されたアプリケーションを起動します。そのファイルは、クライアント・システムの現行ディレクトリーの jars サブディレクトリーにあります。
    ./spark-submit.sh jars/idax_examples.jar --loc client --class com.ibm.idax.spark.examples.ReadExample
  • ReadExample.py ファイルのアプリケーション・コードを基に Python で作成されたアプリケーションを起動します。このアプリケーションには、example_utilities.egg ファイルの内容も必要です (ファイルは両方ともホスト上にあります)。
    ./spark-submit.sh ReadExample.py --py-files example_utilities.egg --loc host
  • ReadExample.R ファイルのアプリケーション・コードを基に R で作成されたアプリケーションを起動します。
    ./spark-submit.sh ReadExample.R
  • 実行依頼 ID 20160815210608126000 のジョブをキャンセルします。
    ./spark-submit.sh --kill 20160815210608126000
  • $HOME/spark/apps ディレクトリーに入っているファイルのリストを表示します。
    ./spark-submit.sh --list-files apps