You need to enable JavaScript to run this app.
导航
临时查询-Spark on EMR Serverless Kernel 实践
最近更新时间:2025.04.15 17:31:21首次发布时间:2024.07.31 19:07:48
我的收藏
有用
有用
无用
无用

为满足用户数据预处理、算法开发、数据探索等场景,DataLeap 为您提供 Notebook 交互式开发环境。 Notebook 基于开源的 Jupyterlab 定制化开发,支持使用 Python、Markdown 语言、引入第三方库完成数据查询操作。本文将为您演示临时查询 Notebook 任务类型中使用 Spark on EMR Serverless 的 Kernel 类型。

1 使用限制

  • 目前 DataLeap 绑定 EMR Serverless Spark 实例处于白名单使用阶段,您可通过提工单的方式,联系我们进行白名单开通使用。
  • 若仅开通 DataLeap 产品大数据集成服务时,不支持创建 Notebook 查询类型,需开通 DataLeap 服务版本中大数据分析、DataOps敏捷研发分布式数据自治的服务,项目方可继续绑定 EMR Serverless Spark 实例。详见版本服务说明
  • Notebook 查询作业中,Spark on EMR Serverless 的 Kernel 类型,仅支持火山引擎 E-MapReduce(EMR)Serverless Spark 实例创建。
  • 暂不支持在数据开发调度的 Notebook 任务类型中配置 Spark on EMR Serverless 的 Kernel 类型。
  • 配置环境启动信息选择计算资源组时,仅支持选择公共计算资源组。

2 准备工作

  1. 已开通 EMR Serverless Spark 公共队列或未开启“SQL 专有资源”的独占队列(即通用资源队列)资源实例。详见队列管理
  2. 已在 DataLeap 项目控制台中,绑定相应的 EMR Serverless Spark 服务实例。详见创建项目-服务绑定
  3. 子用户访问 EMR Serverless Spark 队列资源时,需确保拥有 EMRServerlessFullAccess 或 EMRServerlessReadOnlyAccess 权限策略,子用户可请主账号在访问控制界面进行权限策略添加。
  4. 在通过 EMR Serverless Spark 访问 TOS 资源时,需进行 TOS 鉴权操作。所以,您在任务参数中填写的 serverless.spark.access.key、serverless.spark.secret.key 信息,其对应的账号需要具备访问 TOS 存储桶的权限。TOS 鉴权说明详见 TOS 权限配置

3 新建 Notebook 临时查询任务

  1. 登录 DataLeap租户控制台
  2. 概览界面的具体项目中进入 IDE 开发界面,并在左侧导航栏中,单击临时查询按钮,进入临时查询页面。
  3. 单击新建查询按钮,选择通用 > Notebook 查询类型。
  4. 输入任务名称信息及保存路径,单击确定后,进入 Notebook 任务编辑界面。

注意

任务的名称,只允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且在127个字符以内。

Image

4 配置任务

4.1 配置环境启动信息

  • 新建任务完成后,首次打开 Notebook,需先配置环境启动信息:
    其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

    参数

    说明

    *选择Kernel

    Notebook Kernel 是执行 Notebook 文件包含代码的计算引擎,比如 ipython kernel 执行 python 代码。
    本示例中选择 Spark on EMR Serverless

    说明

    打开 Notebook 任务,配置环境后,默认将自动启动 Kernel,您也可以勾选“Notebook任务打开时,默认不自动启动Kernel。 ”选项,将暂不启动 Kernel。

    *计算资源组

    下拉选择已绑定至项目的公共计算资源组。

    说明

    Spark on EMR Serverless 的 Kernel 类型,目前仅支持公共计算资源组。

    *镜像

    仅支持选择默认镜像地址,预装了常用第三方库,更多 Python 第三方库,您可通过任务,来执行 pip 命令方式安装。如:pip install emoji

    *队列

    下拉选择已在项目中添加的 Spark 计算队列信息。

    说明

    Notebook 查询作业中,Spark 队列类型需选择公共队列 Spark未开启“SQL 专有资源”的通用资源队列,方能正常启动 Kernel。
    当在队列中开启 SQL 专用资源时,设定的队列资源大小,必须要大于 Spark SQL 专用资源中分配的资源规格大小,以确保其有剩余的通用资源,来启动 Kernel。
    Image
    且需在下方的 Spark 参数中,添加该参数 tqs.query.engine.type = sparkcli。

    Spark 参数

    Spark on EMR Serverless 的 Kernel 类型,在任务执行环境中,可添加任务所需的 Spark 参数,您可通过以下方式进行配置:

    • 单行编辑模式:在对应输入框中,输入参数的 key-value值。
      其中,value 值可通过自定义或者项目参数{{value}}的形式进行配置。若您希望同一套代码能在不同执行环境下,自动区分不同的引擎环境参数、项目参数,或者存在敏感信息需要通过参数传递时,可以通过在 value 中设置项目参数的方式,满足此类场景需求。
      例如:若您不想以明文方式配置 AK/SK 等敏感信息,便可通过使用项目参数方式进行配置。如:serverless.spark.access.key: {{ak}}serverless.spark.secret.key: {{sk}},ak、sk 具体信息在项目控制台 > 参数信息界面中配置即可。操作详见参数信息设置
    • 脚本编辑模式:支持 JSON、Yaml 的格式,直接用脚本方式进行配置参数,获取项目参数时,同样可用 {{value}}形式进行配置。

    注意

    Spark on EMR Serverless 查询任务,若需访问 TOS 资源时,需进行 TOS 鉴权操作。因此您必须在参数中增加有权限访问 TOS 存储桶的账号 AK/SK 信息,格式如下:
    serverless.spark.access.key: xxxxxxx
    serverless.spark.secret.key: xxxxxxx
    AK/SK 信息您可进入访问控制台的密钥管理界面获取,复制 Access key ID、 Secret Access Key 信息。如果是子用户,请联系主账号获取密钥。详见 AK 秘钥管理
    TOS 鉴权说明详见 TOS 权限配置

    启动信息配置完成后,单击确认按钮,启动 Kernel 连接,待导航栏 Kernel 状态为 Idle 后,即代表启动成功,可进行后续的调试运行代码逻辑。

  • Kernel 状态说明:

    • Idle 空闲状态:Kernel 处于空闲状态,随时可运行任务。
    • Busy 状态:正在运行代码,Kernel 处于忙碌状态,需等待当前代码执行完成后,再执行后续任务代码。
    • disconnected 断开状态 (断网):Kernel 有网络断开的情况,您需要手动刷新下界面,启动 Kernel 后,再执行任务。
    • connected 连接状态:Kernel 正处于连接状态。
    • dead 状态:连接失败状态,您可以在右侧查看失败原因。
  • 您可单击 Kernel 按钮,进行 Kernel 开启或关闭操作,重启时,您也可进行 Kernel Spark 参数编辑替换。
    Image

4.2 查询任务基础设置

  • 功能操作:
    Notebook 任务编辑界面更多操作,如 Cell 单元框功能按钮说明、参数可详见 Notebook - 4.2 编辑任务
  • 执行设置:
    您可单击进入右侧侧边栏执行设置按钮,进入执行设置界面,配置计算资源组、资源配置、Spark参数等。具体操作详见上方 4.1 配置环境启动信息

4.3 编辑任务

启动 Kernel 状态正常后,即可进入代码编辑查询界面。Notebook 支持 Python、Markdown、Raw 三种语言。
您可以在当前的 cell 框中,输入对应语言的代码逻辑,以 Python 语言为例,为您介绍几种使用示例:

4.3.1 询 LAS Catalog 表数据示例:

注意

查询 LAS Catalog 库表数据时,您需确保 Kernel 环境启动配置时,填写的 AK/SK 信息,其对应的账号拥有 LAS Catalog 库表的建表、读写等权限。
账号权限申请操作可在 DataLeap-数据安全LAS-数据授权界面进行操作。详见申请权限权限管理说明。

sql("show databases").show()

sql("select * from databases.table_name").show()

单击上方操作栏中的运行按钮,执行所编辑的示例语句,等待执行完成后,便可在下方查看运行结果。
Image

4.3.2 安装 Python 第三方库示例

您可按实际业务需求,来安装业务所需的 Python 库资源。示例如下:
Image

pip list #查看当前库
pip install emoji #安装 emoji 库
pip install matplotlib #安装 matplotlib 库

4.3.3 使用安装的第三方库示例

使用上方已安装的 Python 第三方库,来满足实际业务场景需求:

  • 使用 pyplot 画图,您可输入以下绘图示例语句:
    Image

    import matplotlib.pyplot as plt 
    
    fig, ax = plt.subplots()
    
    fruits = ['apple', 'blueberry', 'cherry', 'orange']
    counts = [40, 100, 30, 55]
    bar_labels = ['red', 'blue', '_red', 'orange']
    bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange']
    
    ax.bar(fruits, counts, label=bar_labels, color=bar_colors)
    
    ax.set_ylabel('fruit supply')
    ax.set_title('Fruit supply by kind and color')
    ax.legend(title='Fruit color')
    
    plt.show()
    
  • 使用 emoji 库转换对应表情符号,您可输入以下示例语句:
    Image

    import emoji
    emoji.emojize('nnnn :thumbs_up:')
    

4.3.4 使用 Markdown 语言编辑示例

您可在 Cell 编辑框中,根据实际场景输入 Markdown 语句,示例如下:

## 二级标题
**Notebook 基于开源的 Jupyterlab 定制化开发,支持使用 Python、Markdown、Raw 语言、引入第三方库完成数据查询操作**
### 三级标题 
$$文案居中$$
#### 四级标题
$\min_w \frac{1}{2n_{samples}} \Vert X_{w-Y}\Vert _2\^2+\alpha \Vert w \Vert _2$

单击上方操作栏运行按钮(或快捷键:shift + Enter),等待执行完成后,便可展示如下结果:
Image

4.3.5 Raw 纯文本示例

Notebook 中的 Raw 语言是纯文本形式,您可根据实际情况输入相应的文本信息用于记录:

这里是文本编辑模式
您可在此输入所需记录的信息,以上示例为您演示的是:
1、查询 LAS Catalog 表数据;
2、使用 pyplot 画图;
3、Markdown 语言示例。

4.4 系统变量

DataLeap 平台的 Notebook 任务中,已为您添加以下内置系统变量参数,您无需再修改以下变量:spark、sc、sql

from pyspark.sql import SparkSession
spark = SparkSession.builder.enableHiveSupport().getOrCreate()
sc = spark.sparkContext
sql = spark.sql