
# 在Hive脚本中使用参数并进行作业调度
本章节介绍如何在数据开发模块上开发一个Hive脚本并进行作业调度的示例。
 #### 开发Hive SQL脚本
1. 登录数据治理中心DataArts Studio控制台。
2. 选择一个实例进入后，选择工作空间"数据开发"。
3. 在左侧菜单栏选择"数据开发 \> 脚本开发"。
4. 创建一个Hive SQL脚本，脚本名称为"hive_test"。
5. 编写Hive SQL脚本。编写以下Hive脚本，该脚本包含参数传递。假设我们要从一个表中选择数据并插入到另一个表中。 
   ```
   -- 定义参数
   SET output_path = '${output_path}';
   -- 创建目标表（如果不存在）
   CREATE TABLE IF NOT EXISTS target_table (
       id INT,
       name STRING,
       description STRING
   );
   -- 插入数据
   INSERT INTO target_table
   SELECT id, name, description
   FROM source_table
   WHERE id > 100;
   ```
   
   
6. 保存并提交版本。
7. 运行脚本。
 
#### 开发MRS Hive SQL作业并执行调度
1. 登录数据治理中心DataArts Studio控制台。
2. 选择一个实例进入后，选择工作空间"数据开发"。
3. 在左侧菜单栏选择"数据开发 \> 作业开发"。创建批处理的Pipeline作业。
4. 在作业画布中，从左侧节点列表中拖动"MRS Hive SQL"节点到画布上，配置MRS Hive SQL节点参数。 
   配置"SQL脚本"参数，需要新建Hive SQL脚本或者引用已创建的Hive SQL脚本。新建时，单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002655683397.png)编写Hive SQL脚本，该脚本包含参数传递。假设我们要从一个表中选择数据并插入到另一个表中：
   ```
   -- 定义参数
   SET output_path = '${output_path}';
   -- 创建目标表（如果不存在）
   CREATE TABLE IF NOT EXISTS target_table (
       id INT,
       name STRING,
       description STRING
   );
   -- 插入数据
   INSERT INTO target_table
   SELECT id, name, description
   FROM source_table
   WHERE id > 100;
   ```
   ![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
   - 如果没有已创建好的脚本，单击"新建"按钮（![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002625563952.png)），创建Hive SQL脚本，并引用该脚本。
   
   - 如果已创建好的脚本，直接引用已创建Hive SQL脚本。（[开发Hive SQL脚本]已创建）
   
   - 引用已创建的Hive SQL脚本时，数据连接、数据库等参数信息会自动同步已关联的脚本配置信息。
    
   
   
5. 配置参数传递。配置Hive SQL节点参数。 
   1. 单击"作业参数配置"页签，添加一个参数。
   
   2. 参数名称设置为output_path。
   
   3. 参数值设置为Hive SQL脚本中需要的输出路径，例如 /user/your_username/hive_output。
   
   
   
   
6. 保存并提交版本。
7. 单击"执行调度"运行作业。
8. 查看运行结果。 
   在"批作业监控"页面，确保作业运行成功。单击作业前面的![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002655723087.png)，在操作列查看MRS Hive SQL节点的运行日志信息。
   例如，日志信息可能如下：
   ```
   INFO  : Compiling command(queryId=hive_20231005144532_12345678-1234-1234-1234-1234567890ab): ...... 
   INFO  : Semantic Analysis Completed
   INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:description, type:string, comment:null)], properties:null)
   INFO  : Completed compiling command(queryId=hive_20231005144532_12345678-1234-1234-1234-1234567890ab); Time taken: 0.097 seconds
   INFO  : Executing command(queryId=hive_20231005144532_12345678-1234-1234-1234-1234567890ab): ......
   INFO  : Starting task [Stage-0:MOVE] in serial mode
   INFO  : Loading data to table default.target_table from hdfs://your_hdfs_path
   INFO  : Table default.target_table stats: [numFiles=1, numRows=0, totalSize=1234, rawDataSize=0]
   INFO  : Completed executing command(queryId=hive_20231005144532_12345678-1234-1234-1234-1234567890ab); Time taken: 0.123 seconds
   INFO  : OK
   ```
   
   
 
