SparkSQL开发快速入门

更新时间:
复制为 MD 格式

EMR Serverless Spark支持通过SQL代码编辑和运行任务。本文带您快速体验SQL的创建、启动和运维等操作。

前提条件

步骤一:创建并发布开发任务

重要

任务必须先发布,然后才能在任务编排过程中使用。

  1. 进入数据开发页面。

    1. 登录E-MapReduce控制台

    2. 在左侧导航栏,选择EMR Serverless > Spark

    3. Spark页面,单击目标工作空间名称。

    4. EMR Serverless Spark页面,单击左侧导航栏中的数据开发

  2. 新建users_task任务。

    1. 开发目录页签下,单击image图标。

    2. 新建对话框中,输入名称(例如users_task),类型使用默认的SparkSQL,然后单击确定

    3. 拷贝如下代码到新增的Spark SQL页签(users_task)中。

      CREATE TABLE IF NOT EXISTS students (
        name VARCHAR(64),          
        address VARCHAR(64)       
      )
      USING PARQUET  
      PARTITIONED BY (data_date STRING)              
      OPTIONS (
        'path'='oss://<bucketname>/path/'
      );
      INSERT OVERWRITE TABLE students PARTITION (data_date = '${ds}') VALUES
        ('Ashua Hill', '456 Erica Ct, Cupertino'),
        ('Brian Reed', '723 Kern Ave, Palo Alto');

      目前支持以下基础日期变量,默认为昨天。

      变量

      数据类型

      说明

      {data_date}

      str

      表示日期信息的变量,格式为YYYY-MM-DD

      例如,2023-09-18。

      {ds}

      str

      {dt}

      str

      {data_date_nodash}

      str

      表示日期信息的变量,格式为YYYYMMDD

      例如,20230918。

      {ds_nodash}

      str

      {dt_nodash}

      str

      {ts}

      str

      表示时间戳,格式为YYYY-MM-DDTHH:MM:SS

      例如,2023-09-18T16:07:43。

      {ts_nodash}

      str

      表示时间戳,格式为YYYYMMDDHHMMSS

      例如,20230918160743。

    4. 在数据库下拉列表中选择一个数据库,在会话下拉列表中选择一个已启动的会话实例。

      您也可以在下拉列表中选择创建 SQL 会话,直接创建一个新的会话实例。会话管理更多介绍,请参见管理SQL会话

    5. 单击运行,执行创建的任务。

      返回结果信息可以在下方的运行结果中查看。如果有异常,则可以在运行问题中查看。

  3. 发布users_task任务。

    说明

    任务指定的参数会伴随任务一起发布,并成为产线运行任务时使用的参数;而在SQL编辑器中执行的任务则使用会话中的参数。

    1. 在新增的Spark SQL页签中,单击发布

    2. 在弹出的对话框中,可以输入发布信息,然后单击确定

  4. 新建users_count任务。

    1. 开发目录页签下,单击image图标。

    2. 新建对话框中,输入名称(例如users_count),类型使用默认的SparkSQL,单击确定

    3. 拷贝如下代码到新增的Spark SQL任务页签(users_count)中。

      SELECT COUNT(1) FROM students;
    4. 在数据库下拉列表中选择一个数据库,在会话下拉列表中选择一个已启动的会话实例。

      您也可以在下拉列表中选择创建 SQL 会话,直接创建一个新的会话实例。会话管理更多介绍,请参见管理SQL会话

    5. 单击运行,执行创建的任务。

      返回结果信息可以在下方的运行结果中查看。如果有异常,则可以在运行问题中查看。

  5. 发布users_count任务。

    说明

    任务指定的参数会伴随任务一起发布,并成为产线运行任务时使用的参数;而在SQL编辑器中执行的任务则使用会话中的参数。

    1. 在新增的Spark SQL任务页签中,单击发布

    2. 在弹出的对话框中,可以输入发布信息,然后单击确定

步骤二:创建工作流及其节点

  1. 在左侧导航栏中,单击任务编排

  2. 任务编排页面,单击创建工作流

  3. 创建工作流面板中,输入工作流名称(例如,spark_workflow_task),然后单击下一步

    其他设置区域的参数,请根据您的实际情况配置,更多参数信息请参见管理工作流

  4. 添加users_task节点。

    1. 在新建的节点画布中,单击添加节点

    2. 弹出添加节点面板,在来源文件路径下拉列表中选择已发布的任务users_task,然后单击保存

  5. 添加users_count节点。

    1. 单击添加节点

    2. 弹出添加节点面板,在来源文件路径下拉列表中选择已发布的任务users_count,在上游节点下拉列表中选择users_task,单击保存

  6. 在新建的节点画布中,单击发布工作流

    此时画布中包含 users_taskusers_count 两个 SQL 类型节点,两者通过箭头连接表示执行依赖关系。

  7. 发布对话框中,可以输入发布信息,然后单击确定

步骤三:运行工作流

  1. 任务编排页面,单击新建工作流(例如,spark_workflow_task)的工作流名称

  2. 工作流实例列表页面,单击运行

    说明

    在配置了调度周期后,您也可以在任务编排页面通过左侧的开关按钮启动调度。

  3. 运行工作流对话框中,单击确定

步骤四:查看实例状态

  1. 任务编排页面,单击目标工作流名称(例如,spark_workflow_task)。

  2. 工作流实例列表页面,您可以查看对应的所有工作流实例,以及各工作流实例的运行时间、运行状态等。

    页面上方以柱状图展示各日期的工作流运行状态分布,下方表格还包含工作流运行ID版本运行方式节点数量调度时间启动时间结束时间等列。

  3. 单击工作流实例列表区域的工作流运行 ID,或单击上方的工作流实例图页签,可以查看对应的工作流实例图。

  4. 单击目标节点实例,在弹出的节点信息框中,您可以根据需要操作或查看信息。

    关于此部分内容的相关操作及详细介绍,请参见查看节点实例

    节点信息框中展示任务的启动时间结束时间运行状态运行时间等运行详情,并提供重跑终止运行置成功等操作按钮。

    例如,单击Spark UI跳转至Spark Jobs页面,可以查看Spark任务的实时信息。

    Spark Jobs 页面展示已完成作业列表,包含 Job IdDescriptionSubmittedDurationStages: Succeeded/TotalTasks: Succeeded/Total 等列,可确认各作业的执行状态与耗时。

  5. 单击任务运行 ID,进入任务历史页面,可以查看指标、诊断和日志信息。

    任务总览页签的基础信息区域,可查看运行状态、任务名称、任务运行 ID、任务类型、引擎版本及 Fusion 加速状态等信息。

步骤五:工作流运维

任务编排页面,单击目标工作流名称,进入工作流实例列表页面。您可以:

  • 工作流信息区域,可以编辑部分参数。

  • 工作流实例列表区域,可以查看所有工作流。单击工作流运行 ID,可以进入工作流实例图页面。

    工作流实例图页面展示任务节点的依赖关系及运行状态。示例中,users_task(SQL)为上游节点,users_count(SQL)为下游节点,两者通过连线表示依赖关系,节点均显示运行成功(绿色对勾)。

步骤六:查看数据

  1. 在左侧导航栏中,单击数据开发

  2. 新建SparkSQL开发,然后输入并运行以下命令查看表的详细信息。

    SELECT * FROM students;

    返回信息如下。

    返回结果包含 nameaddressdata_date 三列,共两条记录:Ashua Hill(地址:456 Erica Ct, Cupertino,日期:2024-01-01)和 Brian Reed(地址:723 Kern Ave, Palo Alto,日期:2024-01-01)。

相关文档