本文为您介绍如何提交作业和查看作业信息。

前提条件

已登录集群,详情请参见登录集群

提交作业

方式一:交互式提交作业

  1. 登录集群后,执行以下命令启动streaming-sql。
    streaming-sql
  2. 直接输入streaming-sql支持的DDL或DML语句。

方式二:通过文件提交作业

您可以把需要执行的DDL或DML语句,写在一个文件中(例如,test.sql),然后使用以下命令启动流式作业。

  • yarn-client方式(默认)
    streaming-sql -f test.sql
  • yarn-cluster方式
    streaming-sql --master yarn --deploy-mode cluster -f test.sql

查看作业信息

Spark官方发布的Structured Streaming功能,暂不支持查看具体Structured Streaming作业的运行信息。从EMR-3.21.0版本开始,EMR提供了Spark Streaming SQL预览版功能。EMR通过扩展现有Spark WebUI,支持查看Structured Streaming Query的统计信息。您可以通过Web UI查看Structured Streaming作业的运行信息。

访问Web UI

  1. 在EMR控制台的访问链接与端口页面,单击YARN UI所在行的链接。
    在使用Knox账号访问YARN UI页面时,需要Knox账号的用户名和密码,详情请参见管理用户
  2. 在Hadoop控制台,单击目标作业的Tracking UI列的ApplicationMaster
  3. 单击上方的Structured Streaming页签。
    在Streaming Query可以看到Query列表。
    单击Query的Run ID,可以查看当前Query的运行统计信息。Streaming Query
以上为集群开启Knox的访问方式,如果您的集群未开启Knox,则可以通过http://${baseUrl}/streamingsql访问Spark UI。
说明 请修改${baseUrl}为您实际的URL。

查看Query列表

在Streaming Query页面,为您展示了Active Streaming Queries和Completed Streaming Queries两部分内容。
  • Active Streaming Queries:当前正在运行的Query。
  • Completed Streaming Queries:已完成的Query,包括结束的和失败的Query。
说明 Spark版本不同,展示的参数略有差异,具体请以界面显示为准。
参数 描述
Query Name 查询Name,通过SET streaming.query.name=${QUERY_NAME}指定。
Status 当前运行状态,包括RUNNING、FAILED和FINISHED。
Id Query ID,保存到checkpoint中,多次运行同一个Query, ID保持不变。
Run ID Query Run ID,每次重新运行Query,都会重新生成一个Run ID。
Submit Time 当前Query提交执行的时间。
Duration 当前Query运行时间。
Avg Input PerSec 最近"spark.sql.streaming.numRecentProgressUpdates"个批次的平均数据输入速率。默认最近100个批次统计信息。
Avg Process PerSec 最近"spark.sql.streaming.numRecentProgressUpdates"个批次的平均数据处理速率。默认最近100个批次统计信息。
Total Input Rows 最近"spark.sql.streaming.numRecentProgressUpdates"个批次的数据条数总和,注意不是Query运行期间的数据条数总和。默认最近100个批次统计信息。
Last Batch ID 最近一次完成的Batch ID。
Last Progress 最近一次批次的执行信息。
ERROR 如果Query失败,展示摘要错误信息。

您可以在该页面直接终止某个Query,终止后Query状态变为FINISHED。

查看Query统计详情

单击Query的Run ID,在Streaming Query Statistics页面可以查看当前Query的运行统计信息,包括Input Rate、Process Rate、Input Rows的时序变化,以及每个批次的Duration堆栈图,包括WalCommit、QueryPlanning、GetOffset、GetBatch以及AddBatch。Streaming Query Statistics
您可以查看任意时间的Batch的各个执行阶段的时间消耗。该部分只会展示“spark.sql.streaming.numRecentProgressUpdates”个Batch的统计信息。如果需要查看更长周期内的统计信息,可以设置“spark.sql.streaming.numRecentProgressUpdates”为更大值,但会占用更多的内存。Duration