spark-submit.sh 脚本

您可以使用提供的 spark-submit.sh 脚本从客户端机器启动和管理 Apache Spark 应用程序。此脚本识别由 Apache Spark 提供的 spark-submit 脚本所使用的部分配置属性。另外,还引入了多个其他命令和环境变量,专门用于 Db2® Warehouse 中的 Spark 应用程序管理。

限制

用于 Db2 Warehousespark-submit.sh 脚本:

  • 只能在 Linux 和 MacOS 操作系统上使用
  • 只能用于提交 Scala、Java™、R 和 Python 应用程序
  • 不支持 SSL 证书验证(将会忽略证书,并且不进行对等验证)

先决条件

要使用 spark-submit.sh 脚本,必须先下载并安装 cURL 命令行工具。有关更多信息,请参阅 必需的 REST 工具

准备工作

准备工作:

  • 从控制台下载 spark-submit.sh 脚本。要执行此操作,请单击连接 > 下载工具 > 数据库支持工具
  • 输入下列一个或多个 export 命令以设置环境变量,这可简化 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 目录,并覆盖该目录中已存在的任何同名文件。
例如,以下两个命令指定相同的文件路径 (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。如果应用程序要在具有单个工作节点线程的本地 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
此选项将指定的文件从客户机系统上的所指定源目录,上载到对应于指定选项的目录:
应用程序
上载到 $HOME/spark/apps 目录。对于要提供给特定应用程序使用的文件,请使用此目标。这是缺省选项。
defaultlibs
上载到 $HOME/spark/defaultlibs 目录。对于要提供给所有应用程序使用的文件,请使用此目标。
globallibs
上载到 /globallibs 目录。此选项需要管理员访问权。对于要提供给所有用户的所有应用程序使用的文件,请使用此目标。
--user
管理员可以代表另一用户发出一些命令,例如,将文件上载到该用户的 $HOME/spark/apps$HOME/spark/defaultlibs 目录,或者从这两个目录中下载或删除文件。此选项指定要以其名义发出命令的用户名。
--download-file
此选项将指定的文件从对应于所指定选项的目录下载到客户机系统上的当前目录:
应用程序
$HOME/spark/apps 目录下载。对于包含要提交给 Spark 的应用程序代码的文件,请使用此目标。这是缺省选项。
defaultlibs
$HOME/spark/defaultlibs 目录下载。对于要提供给所有应用程序使用的文件,请使用此目标。
globallibs
/globallibs 目录下载。此选项需要管理员访问权。对于要提供给所有用户的所有应用程序使用的文件,请使用此目标。
--dir
客户机系统上现有目录的名称,文件将会下载到其中,例如:
--dir target1
目标目录是当前目录的子目录。
--dir /target1
目标目录是根目录的子目录。
--dir ../target1
目标目录与当前目录处于同一层次。
--list-files
此选项列示与指定选项对应的目录中的文件:
应用程序
列出 $HOME/spark/apps 目录中的文件。这是缺省选项。
defaultlibs
列出 $HOME/spark/defaultlibs 目录中的文件。
globallibs
列出 /globallibs 目录中的文件。此选项需要管理员访问权。
--delete-file
此选项从对应于指定选项的目录中删除指定的文件:
应用程序
$HOME/spark/apps 目录中删除。这是缺省选项。
defaultlibs
$HOME/spark/defaultlibs 目录中删除。
globallibs
globallibs 目录中删除。此选项需要管理员访问权。
--cluster-status
此选项检索有关 Spark 集群状态的信息,例如当前正在其中运行的应用程序数目。
--app-status
此选项检索具有所指定提交标识的应用程序的状态信息。
--list-apps
此选项检索有关当前正在运行或自最近一次启动集群以来运行的所有应用程序的信息。
--download-cluster-logs
此选项检索 Spark 集群的主节点进程和工作节点进程的标准错误日志和标准输出日志。
--download-app-logs
此选项检索具有所指定提交标识的应用程序的所有日志文件。如果未指定提交标识,那么将检索最近应用程序的日志文件。
--kill
此选项取消具有所指定提交标识的运行中应用程序。
--jsonout
此选项指定 spark-submit.sh 脚本以 JSON 格式显示其输出。此选项覆盖 DASHDBJSONOUT 环境变量的设置。
--display-cluster-log
此选项显示所指示类型的集群日志文件的内容:
out
标准输出日志文件。
err
标准错误日志文件。
主进程
集群主节点的日志文件。
worker
具有所指定 IP 地址的工作节点的日志文件。
--display-app-log
针对具有所指定提交标识的应用程序,此选项显示所指示类型的日志文件的内容:
应用程序
应用程序日志文件。
out
标准输出日志文件。
err
标准错误日志文件。
信息
参考日志文件,其中以 JSON 格式包含应用程序的返回码、消息和异常日志。
如果未指定提交标识,那么将显示最近提交的应用程序的日志文件。
--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
  • 取消提交标识为 20160815210608126000 的作业:
    ./spark-submit.sh --kill 20160815210608126000
  • 列示包含在 $HOME/spark/apps 目录中的文件:
    ./spark-submit.sh --list-files apps