You need to enable JavaScript to run this app.
导航
临时查询-Spark on EMR Serverless Kernel 实践
最近更新时间:2024.08.26 14:49:35首次发布时间:2024.07.31 19:07:48

1 使用场景

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

2 注意事项

  • 若仅开通 DataLeap 产品大数据集成服务时,不支持创建 Notebook 查询类型。详见版本服务说明
  • Notebook 查询作业中,Spark on EMR Serverless 的 Kernel 类型,仅支持火山引擎 E-MapReduce(EMR)Serverless Spark 实例创建。

3 准备工作

  1. 已开通 EMR Serverless Spark 队列资源实例。详见队列管理
  2. 需开通 DataLeap 服务版本中大数据分析、DataOps敏捷研发分布式数据自治的服务,项目方可继续绑定 EMR Serverless Spark 实例。不同服务版本差异详见DataLeap 公有云版本功能差异
  3. 目前 DataLeap 绑定 EMR Serverless Spark 实例处于白名单使用阶段,您可通过提工单的方式,请 DataLeap 支持同学进行白名单开通使用。
  4. 已在 DataLeap 项目控制台中,绑定相应的 EMR Serverless Spark 服务实例。详见创建项目-服务绑定
  5. 子用户访问 EMR Serverless Spark 队列资源时,需确保拥有 EMRServerlessFullAccess 或 EMRServerlessReadOnlyAccess 权限策略,子用户可请主账号在访问控制界面进行权限策略添加。

4 新建 Notebook 临时查询任务

  1. 登录 DataLeap租户控制台
  2. 概览界面,显示加入的项目中,单击数据开发进入对应项目。
  3. 任务开发界面,左侧导航栏中,单击临时查询按钮,进入临时查询页面。
  4. 单击新建查询按钮,进入新建查询对话框。
  5. 绑定引擎选择通用类型,查询类型下拉选择为 Notebook。
  6. 任务名称:输入任务的名称,只允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且在127个字符以内。
  7. 保存至:选择任务存放的目标文件夹目录。
    图片
  8. 单击确定按钮,完成 Notebook 临时查询任务创建。

5 配置任务

5.1 配置环境启动信息

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

    参数

    说明

    *选择Kernel

    Notebook Kernel 是执行 Notebook 文件包含代码的计算引擎,比如 ipython kernel 执行 python 代码。
    目前支持 Python on K8s、Python Spark on EMR、Spark on EMR Serverless 的 Kernel 类型。本示例中选择 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。
    图片
    且需在下方的 Spark 参数中,添加该参数 tqs.query.engine.type = sparkcli。

    Spark 参数

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

    • 单行编辑模式:在对应输入框中,输入参数的 key-value值。
    • 脚本编辑模式:支持 JSON、Yaml 的格式,直接用脚本方式进行配置参数。

    注意

    Spark on EMR Serverless 查询任务,若需访问 TOS 资源时,需进行 TOS 鉴权操作。因此您必须在参数中增加有权限访问 TOS 存储桶的账号 AK/SK 信息,格式如下:
    serverless.spark.access.key: xxxxxxx
    serverless.spark.secret.key: xxxxxxx
    您可进入火山引擎,访问控制台的密钥管理界面,复制 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 参数编辑替换。
    图片

5.2 查询任务基础设置

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

5.3 编辑任务

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

5.3.1 询 LAS Formation 表数据示例:

注意

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

sql("show databases").show()

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

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

5.3.2 安装 Python 第三方库示例

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

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

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

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

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

    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 库转换对应表情符号,您可输入以下示例语句:
    图片

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

5.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),等待执行完成后,便可展示如下结果:
图片

5.3.5 Raw 纯文本示例

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

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

5.4 系统变量

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

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