# 使用Notebook在线开发和调试
本章节详细介绍使用Notebook开发任务的操作指导。
#### 前提条件
已创建Notebook实例并且已启用（状态为运行中）。创建Notebook实例的操作请参见[创建个人运行环境](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1673.html)。
#### 约束条件
- 一个用户在当前工作空间最多能创建10个Notebook。
- 当前仅支持MRS Spark、Fabric SQL两种数据类型。
- 用户只能使用自己创建的Notebook实例进行Notebook作业开发。
- 仅当前工作空间管理员、具有DAYU Administrator或者Tenant Administrator权限的用户、用户自定义角色中拥有"新建"的用户，才可以绑定计算资源。
- 如果用户同时拥有系统预置角色和用户自定义角色，其权限取两种角色权限的并集。
- 绑定MRS Spark计算引擎需要先创建MRS版本集群，支持MRS Spark 3.3.1及以上的版本。
- Notebook作业调度对接MRS Spark时，不支持基于个人的细粒度数据权限管控。
 
 #### 绑定计算资源
如果之前管理Notebook资源时已经绑定了计算资源，可以进入Notebook开发界面后，在代码开发的右上角，单击默认引擎Python（不依赖计算资源），在下拉列表中选择绑定的计算资源。
如果之前没有绑定计算资源，可按照如下步骤绑定计算资源。您也可以在管理中心页面绑定计算资源，具体请参见[绑定/解绑计算资源](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0760.html#dataartsstudio_01_0760__section15871163510328)。
1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
   
   详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
   
   
2. 在DataArts Studio控制台首页，选择对应工作空间的"数据开发"模块，进入数据开发页面。
3. 在项目目录或Notebook环境目录中双击要编辑的Notebook文件。
4. 进入Notebook开发界面后，在代码开发的右上角，单击默认引擎Python（不依赖计算资源），或者单击某个其他计算引擎。
5. 在弹出的下拉框中，单击"绑定计算资源"，配置相关参数。 
   表1绑定计算资源 
   | 参数        | 描述                                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | 资源类型     | - MRS Spark  - Fabric SQL                                                                                                           |
   | 资源名称      | 输入资源名称。                                                                                                                                                                                                                                                                                               |
   | MRS集群   | "资源类型"选择"MRS Spark"时，才需配置。 选择MRS集群。购买MRS集群的操作请参见[购买MRS集群](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0030.html)。MRS集群创建完成后，可以在"现有集群"中查看MRS集群的基本信息。                                                                                                 |
   | 计算资源工作空间 | "资源类型"选择"Fabric SQL"时，才需配置。 工作空间是Fabric的基本单元，请选择Fabric SQL的所属工作空间。 创建资源空间请进入EI领域的数智融合计算服务 DataArtsFabric控制台，创建工作空间。创建工作空间的操作请参见[创建工作空间](https://support.huaweicloud.com/usermanual-fabric/dataartsfabric_02_0004.html)。 |
   | 端点        | "资源类型"选择"Fabric SQL"时，才需配置。 执行SQL任务时必需的计算资源。 选择了计算资源工作空间后，再选择端点。创建SQL端点的操作请参见[创建SQL端点](https://support.huaweicloud.com/usermanual-fabric/dataartsfabric_sql_02_0006.html)。                                          |
      
   
   
6. 单击"确定"，绑定计算资源成功。 
   绑定的计算资源可以在[管理Notebook资源](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0760.html)章节进行查看。同时，您也可以在[管理Notebook资源](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0760.html)章节绑定计算资源。
   
   
 
#### 查看依赖包
在开发过程中，如果用户想要了解当前运行环境中用哪些依赖包，可在数据开发主界面，单击右侧的侧边栏的"依赖包"，在打开的列表中查看环境中已有的依赖包。
环境中没有的包则需要在代码中通过代码语句进行安装。
#### 开发与调试Notebook
1. 进入数据开发主界面，在项目目录或Notebook环境目录中双击要编辑的Notebook文件。
2. 进入Notebook开发界面后，输入开发代码并进行调试。您可以在右上角选择所需要的计算引擎。 
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - 系统默认为Python引擎，不依赖计算资源。
   
   - 同时，支持设置以下两种不同类型的计算引擎：Fabric SQL、MRS Spark。单击默认的Python引擎，可以看到已创建的计算引擎的信息，可以选择您所需要的计算引擎。一个Notebook文件当前仅支持一个计算引擎，选择计算引擎以后，该Notebook文件下的所有单元格使用这一个计算引擎。
   
   - 不同的计算引擎，需要绑定所需的计算资源。绑定计算资源请参见[绑定计算资源]。
   
   - 魔法命令支持如下命令格式：%mrs_spark，%%spark，%aura_frame。
    
   
   
3. **可选：** 输入Markdown格式内容。Notebook支持Markdown基础语法、KaTex 公式和 Mermaid 图表渲染。
   
   1. 单击"新建单元格"，创建一个新单元格。
   
   2. 在新建单元格中，单击右上角的"Python"，选择"Markdown"。
   
   3. 在单元格中输入内容。单击左上角的"显示预览"，可以在右侧实时看到预览效果。 单击单元格右上角的![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407466.png)，或在单元格外空白处单击鼠标左键，单元格中将自动切换为全览模式，此时在单元格中双击鼠标左键，可以切换到编辑模式中。
      
   
   
   
   
4. 单击"保存"，保存已开发的内容。
5. 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002784046429.png)，选择"运行单元格"，会运行整个单元格的代码，运行完成后，显示运行成功，查看执行结果。如果代码执行失败，可以在执行结果中查看可能失败的原因。
   
   ```
   %spark info
   ```
   图1执行结果示例1   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567364.png "点击放大")
   ```
   %%spark
   spark.sql("SHOW TABLES").show()
   ```
   图2执行结果示例2   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407468.png "点击放大")
   ```
   a = "123111" * 2
   print(a)
   a = "12311" * 3
   print(a)
   a = "123eee" * 5
   print(a)
   a = "123aa1122" * 2
   print(a)
   a = "123absg3wut235456&&&" * 2
   print(a)
   ```
   图3执行结果示例3   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567366.png "点击放大")
   图4执行结果示例4   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407470.png "点击放大")
   ```
   %%spark config
   {
       "driverMemory": "2G",
       "driverCores": 1,
       "executorMemory": "2G",
       "executorCores": 1,
       "conf": {
           "spark.pyspark.python": "./temp_env/bin/python",
           "spark.yarn.dist.archives":"obs://notebook-dataarts/python_env/pyspark_conda_env.tar.gz#temp_env",
           "spark.jars": "obs://notebook-dataarts/mrs_jars/spark-utils-1.0-SNAPSHOT.jar"
       }
   }
   ```
   图5执行结果示例5   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567368.png "点击放大")
   ```
   %%spark
   import pandas
   print(pandas.__version__)
   ```
   打包一个带pandas依赖的包，能够引用pandas。
   图6执行结果示例6   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407472.png "点击放大")
   ```
   %mrs_spark
   ```
   图7执行结果示例7   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567370.png "点击放大")
   ```
   %%spark
   import my_script
   print(my_script.add_numbers(10, 20))
   rdd = sc.parallelize(["apple", "banana", "cherry"])
   result = rdd.map(my_script.format_string).collect()
   for item in result:
       print(item)
   ```
   图8执行结果示例8   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407474.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - 每个开发单元格右上方会显示Python，单击"Python"在下拉菜单中选择"Markdown"可切换单元格类型。
   
   - 支持全部运行（运行全部单元格）、保存（保存全部单元格）、提交到项目目录、新建单元格（新建一个单元格）、清除运行结果（清除全部单元格）、更多（重启内核、关闭内核）等操作。右侧开发代码最上方的功能按钮都是针对整个 Notebook文件进行批量操作的。
   
   - 支持复制单元格、粘贴单元格、剪切单元格、在上方添加一个单元格、在下方添加一个单元格、上移、下移、清除运行结果等操作。
   
   - Notebook支持对非Markdown单元格内的部分代码运行调试。选择部分代码，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567372.png)，选择"运行选中文本"，可以运行选中的代码。还支持以下两种方式运行代码。
     - 选择"运行上方所有单元格"，可以运行当前单元格上方所有非Markdown单元格。
     
     - 选择"运行此单元格及以下"，可以运行此单元格及以下所有的非Markdown单元格。
      
   
   - ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002784006257.png)：删除单元格，删除当前的单元格。
   
   - ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407476.png)：单元格窗口最大化。窗口最大化后，仅能看见当前的单元格。
   
   - ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002784046439.png)：单元格窗口最小化。窗口最小化后，能看到所有的单元格。
   
   - ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567374.png)，窗口最大化后，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002784006259.png)可以查看上一个单元格。
   
   - ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754407478.png)，窗口最大化后，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002784046441.png)可以查看下一个单元格。
    
   
   
 
 #### 从环境目录提交到项目目录
如果是新建的Notebook，则需要先从环境目录提交到项目目录。
1. 进入Notebook作业开发界面。
2. 单击右侧单元格最上方的![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002754567376.png)，弹出"提交到项目目录"对话框。
3. 输入Notebook作业的"名称"和"路径"。 
   图9提交到项目目录   
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002784006261.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - 名称只能包含：英文字母、数字、中文、中划线、下划线和点号。
   
   - 名称可以自定义。
   
   - 指定一个Notebook作业存放的路径。
    
   
   
4. 单击"确定"。
5. 在作业目录树查看提交的Notebook作业。
 
