更新时间:2026-08-07 GMT+08:00
分享

获取SQL节点的输出结果值

当您在数据开发模块进行作业开发,需要获取SQL节点的输出结果值,并将结果应用于后续作业节点或判断时,可参考本教程获取SQL节点的输出结果。

场景说明

使用EL表达式#{Job.getNodeOutput("前一节点名")}获取的前一节点的输出结果时,输出结果为二维数组形式 ,形如[["Dean",...,"08"],...,["Smith",...,"53"]]所示。为获取其中的值,本案例提供了如表1所示的两个常见方法示例。

表1 获取结果值常见方法

方法

关键配置

适用场景要求

通过StringUtil提取输出结果值

当SQL节点的输出结果只有一个字段,形如[["11"]]所示时,可以通过StringUtil内嵌对象EL表达式分割二维数组,获取前一节点输出的字段值:

#{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("前一节点名"),"]")[0],"[")[0],"\\"")[0]}

说明:

使用Subjob算子时,如果要把前一个SQL节点的执行结果传给子作业时,则子作业参数的表达式应为:#{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("前一节点名"),"]")[0],"[")[0],"\"")[0]},否则会执行报错。

通过StringUtil提取输出结果值配置简单,但对适用场景有如下要求:

  • 前一SQL节点的输出结果只有一个字段,形如[["11"]]所示。
  • 输出结果值数据类型为String,需要应用场景支持String数据类型。例如当需要使用IF条件判断输出结果值的数值大小时,不支持String类型,则不能使用本方法。

通过For Each节点提取输出结果值

通过For Each节点,循环获取数据集中二维数组的值:

  • For Each节点数据集:#{Job.getNodeOutput('前一节点名')}
  • For Each节点子作业参数:#{Loop.current[索引]}

通过For Each节点输出结果值适用场景更广泛,但需将作业拆分为主作业和子作业。

通过StringUtil提取输出结果值

场景说明

通过StringUtil内嵌对象EL表达式分割二维数组结果,获取前一节点输出的字段值,输出结果类型为String。

本例中,MRS Hive SQL节点返回单字段二维数组,Kafka Client节点发送的数据定义为StringUtil内嵌对象EL表达式,通过此表达式即可分割二维数组,获取MRS Hive SQL节点输出的字段值。

为便于查看最终获得的结果值,本例选择Kafka Client节点进行演示。在实际使用中,您可以根据您的业务需求选择后续节点类型,在节点任务中应用StringUtil内嵌对象EL表达式,即可获取前一节点返回的数据值。

图1 作业样例
其中,Kafka Client节点的关键配置为“发送数据”参数,取值如下:
#{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("count95"),"]")[0],"[")[0],"\\"")[0]}

配置方法

  1. 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。
  2. 选择“空间管理”页签,在工作空间列表中,找到所需要的工作空间,单击工作空间的“数据开发”,系统跳转至数据开发页面。
  3. 构造原始表格student_score。新建临时Hive SQL脚本,选择Hive连接和数据库后,粘贴如下SQL语句并运行,运行成功后即可删除此脚本。

    CREATE TABLE `student_score` (`name` String COMMENT '', `score` INT COMMENT '');
    INSERT INTO
        student_score
    VALUES
        ('ZHAO', '90'),
        ('QIAN', '88'),
        ('SUN', '93'),
        ('LI', '94'),
        ('ZHOU', '85'),
        ('WU', '79'),
        ('ZHENG', '87'),
        ('WANG', '97'),
        ('FENG', '83'),
        ('CHEN', '99');

  4. 新建MRS Hive SQL节点调用的Hive SQL脚本。新建Hive SQL脚本,选择Hive连接和数据库后,粘贴如下SQL语句并提交版本,脚本命名为count95。

    --从student_score表中统计成绩在95分以上的人数--
    SELECT count(*) FROM student_score WHERE score> "95" ; 

  5. 在“作业开发”页面,新建数据开发作业。选择一个MRS Hive SQL节点和一个Kafka Client节点,选中连线图标并拖动,编排如图1所示的作业。
  6. 配置MRS Hive SQL节点参数。SQL脚本选择4中提交的脚本count95,选择Hive连接和数据库。

    图2 配置MRS Hive SQL节点参数

  7. 配置Kafka Client节点参数。发送数据定义为:#{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("count95"),"]")[0],"[")[0],"\\"")[0]},选择Kafka连接和Topic名称。

    图3 配置Kafka Client节点参数

  8. 作业节点配置完成后,选择测试运行。待作业测试运行成功后,在Kafka Client节点上右键查看日志,可以发现MRS Hive SQL节点返回的二维数组[["2"]]已被清洗为2

    您可以将Kafka Client节点中的发送数据定义为#{Job.getNodeOutput("count95")},然后作业运行后查看Kafka Client节点日志,则可以验证MRS Hive SQL节点返回的结果为二维数组[["2"]]

    图4 查看Kafka Client节点日志

通过For Each节点提取输出结果值

场景说明

结合For Each节点及其支持的Loop内嵌对象EL表达式#{Loop.current[0]},循环获取前一节点输出的结果值。

本例中,MRS Hive SQL节点返回多字段的二维数组,选择For Each节点和EL表达式#{Loop.current[]},再通过For Each循环调用Kafka Client节点子作业,Kafka Client节点发送的数据也定义为#{Loop.current[]},通过此配置即可获取MRS Hive SQL节点输出的结果值。

为便于查看最终获得的结果值,本例中For Each节点子作业选择Kafka Client节点进行演示。在实际使用中,您可以根据您的业务需求选择子作业节点类型,在节点任务中应用Loop内嵌对象EL表达式,即可获取For Each前一节点返回的结果值。

For Each节点主作业编排如图5所示。其中,For Each节点的关键配置如下:
  • 数据集:数据集就是HIVE SQL节点的Select语句的执行结果。使用EL表达式#{Job.getNodeOutput("select95")},其中select95为前一个节点的名称。
  • 子作业参数:子作业参数是子作业中定义的参数名,然后在主作业中定义的参数值,传递到子作业以供使用。此处子作业参数名定义为namescore,其值分别为数据集中的第一列和第二列数值,使用EL表达式#{Loop.current[0]}#{Loop.current[1]}
图5 主作业样例

而For Each节点中所选的子作业,则需要定义For Each节点中的子作业参数名,以便让主作业识别参数定义,作业如图6所示。

图6 子作业样例

配置方法

开发子作业

  1. 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。
  2. 选择“空间管理”页签,在工作空间列表中,找到所需要的工作空间,单击工作空间的“数据开发”,系统跳转至数据开发页面。
  3. 在“作业开发”页面,新建数据开发子作业EL_test_slave。选择一个Kafka Client节点,并配置作业参数,编排图6所示的作业。

    此处需将参数名填写为namescore,仅用于主作业的For Each节点识别子作业参数;参数值无需填写。

  4. 配置Kafka Client节点参数。发送数据定义为:${name}: ${score},选择Kafka连接和Topic名称。

    此处不能使用EL表达式#{Job.getParam("job_param_name")} ,因为此表达式只能直接获取当前作业里配置的参数的value,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。

    而表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。

    图7 配置Kafka Client节点参数

  5. 配置完成后提交子作业。

开发主作业

  1. 在“作业开发”主页面,进入脚本开发。
  2. 构造原始表格student_score。新建临时Hive SQL脚本,选择Hive连接和数据库后,粘贴如下SQL语句并运行,运行成功后即可删除此脚本。

    CREATE TABLE `student_score` (`name` String COMMENT '', `score` INT COMMENT '');
    INSERT INTO
        student_score
    VALUES
        ('ZHAO', '90'),
        ('QIAN', '88'),
        ('SUN', '93'),
        ('LI', '94'),
        ('ZHOU', '85'),
        ('WU', '79'),
        ('ZHENG', '87'),
        ('WANG', '97'),
        ('FENG', '83'),
        ('CHEN', '99');

  3. 新建MRS Hive SQL节点调用的Hive SQL脚本。新建Hive SQL脚本,选择Hive连接和数据库后,粘贴如下SQL语句并提交版本,脚本命名为select95。

    --从student_score表中展示成绩在95分以上的姓名和成绩--
    SELECT * FROM student_score WHERE score> "95" ; 

  4. 在“作业开发”页面,新建数据开发主作业EL_test_master。选择一个HIVE SQL节点和一个For Each节点,选中连线图标并拖动,编排图5所示的作业。
  5. 配置MRS Hive SQL节点参数。SQL脚本选择3中提交的脚本select95,选择Hive连接和数据库。

    图8 配置MRS Hive SQL节点参数

  6. 配置For Each节点属性,如图9所示。

    • 子作业:子作业选择已经开发完成的子作业EL_test_slave
    • 数据集:数据集就是HIVE SQL节点的Select语句的执行结果。使用EL表达式#{Job.getNodeOutput("select95")},其中select95为前一个节点的名称。
    • 子作业参数:子作业参数是子作业中定义的参数名,然后在主作业中定义的参数值,传递到子作业以供使用。此处子作业参数名定义为namescore,其值分别为数据集中的第一列和第二列数值,使用EL表达式#{Loop.current[0]}#{Loop.current[1]}
    图9 配置For Each节点参数

  7. 配置完成后保存作业。

测试运行主作业

  1. 单击主作业EL_test_master画布上方的“测试运行”按钮,测试作业运行情况。主作业运行后,会通过For Each节点循环调用运行子作业EL_test_slave
  2. 单击左侧导航栏中的“实例监控”,进入实例监控中查看作业运行结果。
  3. 待作业运行完成后,从实例监控中找到子作业EL_test_slave的循环运行结果,如图10所示。

    图10 子作业运行结果

  4. 查看子作业EL_test_slave在循环运行中的结果日志,从日志中可以看到,结合For Each节点及其支持的Loop内嵌对象EL表达式,成功获取For Each前一节点输出的结果值。

    图11 查看日志

DataArts Studio的数据开发作业中Shell节点如何获取MRS Hive SQL节点执行的结果

在DataArts Studio的数据开发作业中,Shell节点获取MRS Hive SQL节点执行结果,可参考以下几种方法:

  • 方法一:使用参数传递
    1. 登录DataArts Studio管理控制台

      详情请参考访问DataArts Studio实例控制台

    2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
    3. 进入“数据开发 > 脚本开发”主界面。创建一个Hive SQL脚本。设置脚本参数,比如,数据连接、数据库等参数为必填,MRS资源队列为可选参数。

      输入如下语句,确保该SQL语句将结果输出到HDFS上的一个文件中。

      INSERT OVERWRITE DIRECTORY '/user/your_username/hive_output'
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '\t'
      SELECT * FROM your_table WHERE condition;

      保存并提交脚本版本,运行该脚本。

    4. 进入“数据开发 > 作业开发”主界面,创建批处理的Pipeline作业。
    5. 在作业画布中,从左侧节点列表中拖动“MRS Hive SQL”节点到画布上。
    6. 单击MRS Hive SQL节点,进入节点配置页面。
    7. 配置“SQL脚本”参数,需要新建Hive SQL脚本或者引用已创建的Hive SQL脚本,脚本中要包含如下语句,确保该SQL语句将结果输出到HDFS上的一个文件中,例如:
      INSERT OVERWRITE DIRECTORY '/user/your_username/hive_output'
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '\t'
      SELECT * FROM your_table WHERE condition;
      • 如果没有已创建好的脚本,单击“新建”按钮(),创建Hive SQL脚本,并引用该脚本。
      • 如果已创建好的脚本,直接引用已创建Hive SQL脚本。(步骤3已创建
      • 引用已创建的Hive SQL脚本时,数据连接、数据库等参数信息会自动同步已关联的脚本配置信息。
    8. 设置输出路径参数。
      1. 在Hive SQL节点的配置页面中,设置一个参数来传递输出路径。例如,可以设置一个参数output_path,值为/user/your_username/hive_output。具体操作如下:
        1. 单击“作业参数配置”页签,添加一个参数。
        2. 参数名称设置为output_path。
        3. 参数值设置为/user/your_username/hive_output
      2. 在上面步骤7的Hive SQL脚本中使用该参数,例如:
        INSERT OVERWRITE DIRECTORY '${output_path}'
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY '\t'
        SELECT * FROM your_table WHERE condition;
    9. 配置完成后,保存节点配置。
    10. 在作业画布中,从左侧节点列表中拖动“Shell”节点到画布上。将Shell节点连接到Hive SQL节点,确保Shell节点在Hive SQL节点执行成功后开始执行。
    11. 单击Shell节点,进入节点配置页面。

      在“Shell语句”中编写Shell脚本,从HDFS中读取Hive SQL节点的输出文件。以下是一个示例脚本:

      #!/bin/bash
      
      # 从Hive SQL节点传递的参数中获取输出路径
      OUTPUT_PATH=$1
      LOCAL_OUTPUT_FILE="/path/to/local/output/file"
      
      # 从HDFS中读取文件
      hadoop fs -getmerge $OUTPUT_PATH $LOCAL_OUTPUT_FILE
      
      # 检查文件是否成功下载
      if [ $? -eq 0 ]; then
          echo "文件已成功下载到 $LOCAL_OUTPUT_FILE"
      else    
          echo "文件下载失败"
      fi

      替换/path/to/local/output/file为实际的值。

    12. 配置参数传递。
      1. 在Shell节点的配置页面中,设置参数传递。在“参数”部分,添加一个参数,例如output_path并将其值设置为Hive SQL节点中设置的输出路径参数
      2. 确保Shell脚本中的第一个参数$1对应于传递的output_path参数。具体操作如下:
        1. 单击“作业参数配置”页签,添加一个参数。
        2. 参数名称设置为output_path。
        3. 参数值设置为MRS Hive SQL节点中设置的输出路径参数,例如/user/your_username/hive_output。

          该参数可以是常量或者变量。具体取决于您的需求和配置方式。

          常量配置:

          • 参数名称设置为output_path。
          • 参数值设置为一个固定的值,例如/user/your_username/hive_output。

          变量配置:

          • 参数名称设置为output_path。
          • 参数值设置为一个变量,例如${output_path},这个变量的值从上游的MRS Hive SQL节点传递过来。
    13. 配置完成后,保存节点配置。
    14. 作业配置完成后,保存并提交作业版本。运行作业以验证Hive SQL节点和Shell节点的执行结果。检查Shell节点是否能够正确获取Hive SQL节点的执行结果,并进行必要的调试。
    15. 对作业进行执行调度,在“批作业监控”查看作业运行结果。
      • 监控作业的执行状态,确保Hive SQL节点和Shell节点都成功执行。
      • 检查Shell节点生成的输出文件,确保文件内容与Hive SQL节点的执行结果一致。
      • 如果有错误,根据日志信息进行调试和修正。

    在DataArts Studio的数据开发中,通过参数传递的方法让Shell节点获取Hive SQL节点的执行结果时,$1output_path参数之间的关系如下:

    • output_path参数:在Hive SQL节点中定义并设置的输出路径参数。
    • $1参数:在Shell脚本中,用于接收传递的output_path参数值的位置参数。

    关系说明

    output_path参数

    定义:在Hive SQL节点中定义的一个参数,用于传递输出路径。

    配置:在Hive SQL节点的配置页面中,设置一个参数output_path,并为其赋值,例如/user/your_username/hive_output。

    使用:在Hive SQL节点的SQL脚本中使用该参数。详细配置请参见8

    $1参数

    定义:在Shell脚本中,$1是一个位置参数,表示传递给Shell脚本的第一个参数。

    配置:在Shell节点的配置页面中,设置一个参数output_path,并将其值设置为MRS Hive SQL节点中设置的输出路径参数。

    使用:在Shell脚本中,使用$1来接收传递的output_path 参数值。详细配置请参见11

    主要操作步骤如下:
    1. Hive SQL节点

      1. 设置参数output_path,值为/user/your_username/hive_output。
      2. 在SQL脚本中使用${output_path}。
    2. Shell节点
      1. 设置参数output_path,值为Hive SQL节点中设置的输出路径参数。
      2. 在Shell脚本中,使用$1接收传递的output_path参数值。
  • 方法二:通过OBS中转
    1. 登录DataArts Studio管理控制台

      详情请参考访问DataArts Studio实例控制台

    2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
    3. 进入“数据开发 > 脚本开发”主界面。创建一个Hive SQL脚本。设置脚本参数,比如,数据连接、数据库等参数为必填,MRS资源队列为可选参数。

      输入如下语句,确保该SQL语句将结果输出到OBS上的一个文件中。

      INSERT OVERWRITE DIRECTORY 'obs://your-bucket/hive_output'
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '\t'
      SELECT * FROM your_table WHERE condition;

      保存并提交脚本版本,运行该脚本。

    4. 进入“数据开发 > 作业开发”主界面,创建批处理的Pipeline作业。
    5. 在作业画布中,从左侧节点列表中拖动“MRS Hive SQL”节点到画布上。
    6. 单击MRS Hive SQL节点,进入节点配置页面。
    7. 配置“SQL脚本”参数,需要新建Hive SQL脚本或者引用已创建的Hive SQL脚本,脚本中要包含如下语句,确保该SQL语句将结果输出到OBS上的一个文件中,例如:
      INSERT OVERWRITE DIRECTORY 'obs://your-bucket/hive_output'
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '\t'
      SELECT * FROM your_table WHERE condition;
      • 如果没有已创建好的脚本,单击“新建”按钮(),创建Hive SQL脚本,并引用该脚本。
      • 如果已创建好的脚本,直接引用已创建Hive SQL脚本。(步骤3已创建
      • 引用已创建的Hive SQL脚本时,数据连接、数据库等参数信息会自动同步已关联的脚本配置信息。
    8. (可选)配置MRS Hive SQL节点的其他参数,如资源、参数等。
    9. 配置完成后,保存节点配置。
    10. 在作业画布中,从左侧节点列表中拖动“Shell”节点到画布上。将Shell节点连接到Hive SQL节点,确保Shell节点在Hive SQL节点执行成功后开始执行。
    11. 单击Shell节点,进入节点配置页面。

      在“Shell语句”中编写Shell脚本,从OBS中读取Hive SQL节点的输出文件。以下是一个示例脚本:

      #!/bin/bash
      
      # 设置OBS路径和本地输出路径
      OBS_PATH="obs://your-bucket/hive_output"
      LOCAL_OUTPUT_FILE="/path/to/local/output/file"
      
      # 设置OBS访问密钥
      export AWS_ACCESS_KEY_ID="your_access_key"
      export AWS_SECRET_ACCESS_KEY="your_secret_key"
      
      # 从OBS中读取文件
      hadoop fs -getmerge $OBS_PATH $LOCAL_OUTPUT_FILE
      
      # 检查文件是否成功下载
      if [ $? -eq 0 ]; then    
          echo "文件已成功下载到 $LOCAL_OUTPUT_FILE"
      else    
          echo "文件下载失败"
      fi

      替换your-bucket、/path/to/local/output/file、your_access_key和your_secret_key为实际的值。

    12. (可选)配置Shell节点的其他参数,如资源、参数等。
    13. 配置完成后,保存节点配置。
    14. 作业配置完成后,保存并提交作业版本。运行作业以验证Hive SQL节点和Shell节点的执行结果。检查Shell节点是否能够正确获取Hive SQL节点的执行结果,并进行必要的调试。
    15. 对作业进行执行调度,在“批作业监控”查看作业运行结果。
      • 监控作业的执行状态,确保Hive SQL节点和Shell节点都成功执行。
      • 检查Shell节点生成的输出文件,确保文件内容与Hive SQL节点的执行结果一致。
      • 如果有错误,根据日志信息进行调试和修正。
  • 方法三:通过HDFS(Hadoop Distributed File System,即Hadoop分布式文件系统)中转
    1. 登录DataArts Studio管理控制台

      详情请参考访问DataArts Studio实例控制台

    2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
    3. 进入“数据开发 > 脚本开发”主界面。创建一个Hive SQL脚本。设置脚本参数,比如,数据连接、数据库等参数为必填,MRS资源队列为可选参数。

      输入如下语句,确保该SQL语句将结果输出到HDFS上的一个文件中。

      INSERT OVERWRITE DIRECTORY '/user/your_username/hive_output'
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '\t'
      SELECT * FROM your_table WHERE condition;

      保存并提交脚本版本,运行该脚本。

    4. 进入“数据开发 > 作业开发”主界面,创建批处理的Pipeline作业。
    5. 在作业画布中,从左侧节点列表中拖动“MRS Hive SQL”节点到画布上。
    6. 单击MRS Hive SQL节点,进入节点配置页面。
    7. 配置“SQL脚本”参数,需要新建Hive SQL脚本或者引用已创建的Hive SQL脚本,脚本中要包含如下语句,确保该SQL语句将结果输出到HDFS上的一个文件中,例如:
      INSERT OVERWRITE DIRECTORY '/user/your_username/hive_output'
      ROW FORMAT DELIMITED
      FIELDS TERMINATED BY '\t'
      SELECT * FROM your_table WHERE condition;
      • 如果没有已创建好的脚本,单击“新建”按钮(),创建Hive SQL脚本,并引用该脚本。
      • 如果已创建好的脚本,直接引用已创建Hive SQL脚本。(步骤3已创建
      • 引用已创建的Hive SQL脚本时,数据连接、数据库等参数信息会自动同步已关联的脚本配置信息。
    8. (可选)配置MRS Hive SQL节点的其他参数,如资源、参数等。
    9. 配置完成后,保存节点配置。
    10. 在作业画布中,从左侧节点列表中拖动“Shell”节点到画布上。将Shell节点连接到Hive SQL节点,确保Shell节点在Hive SQL节点执行成功后开始执行。
    11. 单击Shell节点,进入节点配置页面。

      在“Shell语句”中编写Shell脚本,从HDFS中读取Hive SQL节点的输出文件。以下是一个示例脚本:

      #!/bin/bash 
      
      # 设置HDFS路径和本地输出路径
      HDFS_PATH="/user/your_username/hive_output"
      LOCAL_OUTPUT_FILE="/path/to/local/output/file"# 从HDFS中读取文件
      
      # 从HDFS中读取文件
      hadoop fs -getmerge $HDFS_PATH $LOCAL_OUTPUT_FILE# 检查文件是否成功下载
      
      # 检查文件是否成功下载
      if [ $? -eq 0 ]; then    
          echo "文件已成功下载到 $LOCAL_OUTPUT_FILE"
      else    
          echo "文件下载失败"
      fi

      替换/user/your_username/hive_output和/path/to/local/output/file为实际的值。

    12. (可选)配置Shell节点的其他参数,如资源、参数等。
    13. 配置完成后,保存节点配置。
    14. 作业配置完成后,保存并提交作业版本。运行作业以验证Hive SQL节点和Shell节点的执行结果。检查Shell节点是否能够正确获取Hive SQL节点的执行结果,并进行必要的调试。
    15. 对作业进行执行调度,在“批作业监控”查看作业运行结果。
      • 监控作业的执行状态,确保Hive SQL节点和Shell节点都成功执行。
      • 检查Shell节点生成的输出文件,确保文件内容与Hive SQL节点的执行结果一致。
      • 如果有错误,根据日志信息进行调试和修正。
  • 方法四:通过数据库中转,使用JDBC连接查询结果表
    1. 登录DataArts Studio管理控制台

      详情请参考访问DataArts Studio实例控制台

    2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
    3. 进入“数据开发 > 脚本开发”主界面。创建一个Hive SQL脚本。设置脚本参数,比如,数据连接、数据库等参数为必填,MRS资源队列为可选参数。

      输入如下语句,确保该SQL语句将结果插入到一个临时表中。

      CREATE TABLE IF NOT EXISTS temp_results AS
      SELECT * FROM your_table WHERE condition;

      保存并提交脚本版本,运行该脚本。

    4. 进入“数据开发 > 作业开发”主界面,创建批处理的Pipeline作业。
    5. 在作业画布中,从左侧节点列表中拖动“MRS Hive SQL”节点到画布上。
    6. 单击MRS Hive SQL节点,进入节点配置页面。
    7. 配置“SQL脚本”参数,需要新建Hive SQL脚本或者引用已创建的Hive SQL脚本,脚本中要包含如下语句,确保该SQL语句将结果插入到一个临时表中,例如:
      CREATE TABLE IF NOT EXISTS temp_results AS
      SELECT * FROM your_table WHERE condition;
      • 如果没有已创建好的脚本,单击“新建”按钮(),创建Hive SQL脚本,并引用该脚本。
      • 如果已创建好的脚本,直接引用已创建Hive SQL脚本。(步骤3已创建
      • 引用已创建的Hive SQL脚本时,数据连接、数据库等参数信息会自动同步已关联的脚本配置信息。
    8. (可选)配置MRS Hive SQL节点的其他参数,如资源、参数等。
    9. 配置完成后,保存节点配置。
    10. 在作业画布中,从左侧节点列表中拖动“Shell”节点到画布上。将Shell节点连接到Hive SQL节点,确保Shell节点在Hive SQL节点执行成功后开始执行。
    11. 单击Shell节点,进入节点配置页面。

      在“Shell语句”中编写Shell脚本,使用JDBC连接查询临时表中的数据。以下是一个示例脚本:

      #!/bin/bash
      
      # 设置JDBC连接参数
      JDBC_URL="jdbc:hive2://<Hive服务器IP>:<端口>/default"
      JDBC_USER="your_username"
      JDBC_PASSWORD="your_password"
      OUTPUT_FILE="/path/to/output/file"
      
      # 使用JDBC连接查询临时表
      beeline -u "$JDBC_URL" -n "$JDBC_USER" -p "$JDBC_PASSWORD" -e "SELECT * FROM temp_results" > "$OUTPUT_FILE"
      
      # 检查查询结果
      if [ $? -eq 0 ]; then
          echo "查询成功,结果已保存到 $OUTPUT_FILE"
      else    
          echo "查询失败"
      fi

      替换<Hive服务器IP>、<端口>、your_username、your_password和/path/to/output/file为实际的值。

    12. (可选)配置Shell节点的其他参数,如资源、参数等。
    13. 配置完成后,保存节点配置。
    14. 作业配置完成后,保存并提交作业版本。运行作业以验证Hive SQL节点和Shell节点的执行结果。检查Shell节点是否能够正确获取Hive SQL节点的执行结果,并进行必要的调试。
    15. 对作业进行执行调度,在“批作业监控”查看作业运行结果。
      • 监控作业的执行状态,确保Hive SQL节点和Shell节点都成功执行。
      • 检查Shell节点生成的输出文件,确保文件内容与Hive SQL节点的执行结果一致。
      • 如果有错误,根据日志信息进行调试和修正。

相关文档