本文向您介绍,如何在 E-MapReduce 控制台上新建交互式任务,并指导您完成任务的创建和运行。

新建交互式任务

说明 要运行交互式任务的集群的配置,必须满足 EMR-2.3 及以上版本,不小于三节点,4 核 8 G及以上配置。
  1. 登录阿里云 E-MapReduce 控制台
  2. 单击上方的老版作业调度
  3. 在左侧导航栏中单击交互式工作台
  4. 单击右侧新建交互式任务文件 > -新建交互式任务。

  5. 填入名称,选择默认类型,关联集群可选,单击确认新建一个交互式任务。

    类型目前支持三类,Spark 可以编写 scala spark 代码,Spark SQL 可以写 Spark 支持的 sql 语句,Hive 可以写 Hive 支持的 sql 语句。
  6. 关联集群,需要是一个创建好的集群,且必须是 EMR-2.3 及以上版本,不小于三节点,4 核 8 G及以上配置。也可以先不关联,在运行前再关联。

    目前一个账户最多创建 20 个交互式任务。

填写保存段落

段落是运行任务的最小单元,1 个交互式任务可以填写多个段落。每个段落可以在内容开头写%spark%sql%hive表明该段落是 Scala Spark代码段,Spark Sql,还是 Hive sql。类型前缀以空格或换行和实际内容分割,不写类型前缀则以交互式任务的默认类型作为该段落的运行类型。

一个创建spark临时表的示例如下:

将如下代码粘贴进段落内,会显示一个红*提醒有修改,通过保存段落按钮或运行按钮可以保存对段落内容的修改,单击段落下方的+可以新建一个段落。目前一个交互式任务最多可以创建 30 个段落。

%spark
import org.apache.commons.io.IOUtils
import java.net.URL
import java.nio.charset.Charset
// load bank data
val bankText = sc.parallelize(
    IOUtils.toString(
        new URL("http://emr-sample-projects.oss-cn-hangzhou.aliyuncs.com/bank.csv"),
        Charset.forName("utf8")).split("\n"))
case class Bank(age: Integer, job: String, marital: String, education: String, balance: Integer)
val bank = bankText.map(s => s.split(";")).filter(s => s(0) != "\"age\"").map(
    s => Bank(s(0).toInt, 
            s(1).replaceAll("\"", ""),
            s(2).replaceAll("\"", ""),
            s(3).replaceAll("\"", ""),
            s(5).replaceAll("\"", "").toInt
        )
).toDF()
bank.registerTempTable("bank")


运行段落

运行之前首先要关联一个已经创建好的集群,如果创建交互式任务时未关联,右上角显示未关联,单击在可用集群列表中选择一个。注意关联的集群必须是 EMR-2.3 以上版本,不小于三节点,4 核 8 G即以上配置。



单击运行按钮,会自动保存当前段落,运行内容,如果这是最后一个段落会自动新建一个段落。

运行后会显示当前的运行状态,还未实际运行的是 PENDING,运行后是 RUNNING。运行完成是 FINISHED,如果有错误是 ERROR,运行结果会显示在段落的运行按钮下方。运行时可以点运行按钮下方的取消按钮取消运行,取消的状态显示 ABORT



段落可以反复多次运行,只保留最后一次运行的结果。运行时不能修改段落的输入内容,运行后可以修改。

运行全部

交互式任务可以单击菜单栏上的运行全部运行所有的段落,段落会顺序提交运行。不同的类型有独立的执行队列,如果一个交互式任务包含多种段落类型,顺序提交运行后,实际在集群上的执行顺序是按照类型划分的。Spark 和 Spark sql类型是顺序一个个的执行。Hive 支持并发执行,同一个集群交互式段落最大并发数是 10。注意并发运行的作业同时受集群资源限制,集群规模小并发很多依然要在 YARN 上排队。



取消关联集群

集群运行过交互式任务后,为了再次执行时能够快速响应,会创建进程缓存一些上下文运行环境。如果您暂时不再执行交互式任务,想要释放缓存占用的集群资源,可以把运行过的交互式任务都取消关联,会释放掉原关联集群上占用的内存资源。



其他操作项

  • 段落操作

    • 隐藏结果/显示结果

      可以将段落的结果隐藏掉,只显示段落的输入内容。

    • 删除

      删除当前段落,运行中的段落也可以删除。

  • 文件菜单

    • 新建交互式任务

      新建一个交互式任务,并切换界面到新建的交互式任务上。

    • 新建段落

      在交互式任务的尾部添加一个新段落,一个交互式任务最多有30个段落。

    • 保存所有段落

      所有修改过的段落都会保存

    • 删除交互式任务

      删除掉当前的交互式任务。如果关联了集群会同时取消关联。

  • 视图

    只显示代码/显示代码和结果

    所有段落只显示输入的代码,还是同时显示结果内容。