离线分析组件

如离线分析SparkSQL节点涉及对STDB进行查询等操作,需在[配置管理/参数管理]中,将“离线分析是否加载时空函数”配置为true

 

离线分析组件是业务流程画布中用来关联离线作业的组件,包含MRSparkJarHiveSQLJavaSqoopShellSparkSQLPySparkRDSSQL类型。

表-1 离线分析组件参数说明

离线分析

说明

MRSparkJarJavaShellPySpark

可以选择[作业开发\任务管理]下对应类型的类型的任务作为模板,加载后适当修改参数,并配置执行队列,即可为完成配置(除执行队列外的其他参数大都是非必配的,部分内置任务的必配参数说明请参见内置任务

执行队列:选择本组织可以使用的队列

HiveSQL

可以配置作业名称、执行队列、SQL语句,即可完成(其他参数是非必要的)。该组件配置参数说明如下:

  • 节点名称:配置作业节点的名称

  • 作业名称:必填,配置作业的名称

  • 描述:配置作业的描述信息

  • 执行队列:必选,选择本组织可以使用的队列

  • prepare:对应Oozie中的prepare标签元素,用于创建或者删除指定的HDFS目录

  • configuration:指定Mapper类和Reducer类等MapReduce客户端配置参数,鼠标悬于后方的图标上,可以查看该参数的说明。支持配置多项,点击后方的图标可以新增一项,点击图标可以删除一项

  • sql:必填,单击<编辑SQL>按钮,在弹出窗口中输入SQL语句,输入完成后单击<确定>按钮

  • param:指定执行所需的环境变量。支持配置多条,点击后方的图标可以新增一条,点击图标可以删除一条

  • 出错重跑:配置是否在运行失败的情况下重新运行

  • 出错重跑次数:配置运行失败时的重新运行次数,开启出错重跑后需配置该参数

  • 出错重跑间隔:配置失败后重新运行的时间间隔,开启出错重跑后需配置该参数

Sqoop

  • 节点名称:配置作业节点的名称

  • 作业名称:必填,配置作业的名称

  • 描述:配置作业的描述信息

  • 执行队列:必选,选择本组织可以使用的队列

  • prepare:对应Oozie中的prepare标签元素,用于创建或者删除指定的HDFS目录

  • configuration:指定Mapper类和Reducer类等MapReduce客户端配置参数。支持配置多项,点击后方的图标可以新增一项,点击图标可以删除一项

  • 功能:选择Sqoop组件的功能,即从HDFSRDB转换,从RDBHDFS转换,以及手动配置命令等

  • RDB:在弹出窗口中配置RDB类型数据源中的表名

  • HDFS:在弹出窗口中选择HDFS目录

  • COMMAND:手动配置命令

  • 出错重跑:配置是否在运行失败的情况下重新运行

  • 出错重跑次数:配置运行失败时的重新运行次数,开启出错重跑后需配置该参数

  • 出错重跑间隔:配置失败后重新运行的时间间隔,开启出错重跑后需配置该参数

SparkSQL

用来关联需要到Hadoop集群上以SparkSQL方式运行的Spark任务,适用于可以用SQL语句描述的批处理场景。其参数说明如下:

  • 节点名称:配置作业节点的名称

  • 描述:配置作业的描述信息

  • 执行队列:必选,指定SparkSQL作业在集群中运行使用的队列,请选择本组织可使用的队列,关于队列的详细说明请参见SparkSQL节点队列说明

  • sql:单击<编辑SQL>按钮,可以在弹出窗口中编辑SQL语句。编辑SQL语句的操作介绍请参见编辑SQL

  • executor核数:常用的SparkSQL作业节点的规格参数。配置Spark单个executor执行需要的核心个数,提高该参数的值可以提高executor中运算的并行度

  • 内存(MB):常用的SparkSQL作业节点的规格参数。配置Spark单个executor执行需要的内存大小,如任务运行过程中出现内存溢出异常,则可适当提高该参数值

  • driver核数:常用的SparkSQL作业节点的规格参数。配置Spark driver程序执行需要的核心个数

  • 内存(MB):常用的SparkSQL作业节点的规格参数。配置Spark driver程序执行需要的内存大小

  • 实例数:常用的SparkSQL作业节点的规格参数。配置Spark任务执行需要的executor的实例个数

  • 堆外内存:常用的SparkSQL作业节点的规格参数。配置Spark任务的executor程序堆外内存大小

  • driver堆外内存:常用的SparkSQL作业节点的规格参数。配置Spark dirver程序执行需要的堆外内存大小

  • sparkOpts:配置SparkSQL作业节点的规格参数。输入框中存在缺省的配置值,可以根据实际需求调整。如运行SparkSQL还需要其他Spark相关的配置项均可在此处点击添加。需要删除则点击。缺省值的介绍如下:

  • spark.sql.hive.convertMetastoreParquet:当需要从Hive类型数据源的数据表中读取数据,以及向Hive类型数据源的非分区数据表中写入数据时,是否启用SparkSQL自带的Parquet支持库来替代HiveSerDe进行序列化/反序列化,以获得更好的性能。默认为false,不开启;true表示开启

  • spark.sql.autoBroadcastJoinThreshold:当执行join时,被广播到worker节点上表最大字节。默认10MB,配置自动广播的数据量大小。如果设置成-1,则禁用该特性

  • spark.dynamicAllocation.maxExecutors:动态分配最大executor个数,默认设置30个。可根据实际需求调整

  • 参数配置:配置作业的时间范围参数

  • configuration:指定SparkSQL作业的配置参数。支持配置多项,点击后方的图标可以新增一项,点击图标可以删除一项

  • 出错重跑:配置是否在运行失败的情况下重新运行

  • 出错重跑次数:配置运行失败时的重新运行次数,开启出错重跑后需配置该参数

  • 出错重跑间隔:配置失败后重新运行的时间间隔,开启出错重跑后需配置该参数

关于SparkSQL组件的结算结果,可能存在精度问题,详细说明请参见SparkSQL组件计算精度说明

RDSSQL

下发分析型SQL语句到MPP数据库(GreenplumVerticaDLH类型),其参数说明如下:

  • 节点名称:配置作业节点的名称

  • 描述:配置作业的描述信息

  • sql:单击<编辑SQL>按钮,可以在弹出窗口中编辑SQL语句。编辑SQL语句的操作介绍请参见编辑SQL

  • 出错重跑:配置是否在运行失败的情况下重新运行

  • 出错重跑次数:配置运行失败时的重新运行次数,开启出错重跑后需配置该参数

  • 出错重跑间隔:配置失败后重新运行的时间间隔,开启出错重跑后需配置该参数

子流程

业务流程可以嵌套引用业务流程作为其子流程,其参数说明如下:

  • 节点名称:配置作业节点的名称

  • 子流程:点击输入框后,在弹出的“业务流程列表”窗口中选择业务流程。窗口中的列表上方支持筛选业务流程;列表中的“原因”列展示了业务流程无法作为子流程的原因

当同一个业务流程中,子流程与跨组织节点(属于控制节点组件)配合使用时,存在限制,详细说明请参见跨组织节点与子流程配合使用限制说明

SparkSQL节点队列说明

SparkSQL任务通过Oozie进行调度,因此每执行一个SparkSQL任务,都将向集群提交一个Oozie Launcher类型的任务,并由该任务拉起一个SparkSQL任务。

为优化SparkSQL任务的集群队列资源参数,防止同时大批量提交任务,使得Oozie Launcher任务将同一队列资源占满,导致SparkSQL任务无法拉起,建议通过配置使得Oozie LauncherSparkSQL任务提交在不同的队列上。具体操作步骤为:

  1. 在集群开启Kerberos认证的情况下,请至[系统]模块下的[系统配置/大数据集群资源]配置页面中,为所在组织配置Kerberos用户及队列信息(在集群开启Kerberos认证的情况下,也可配置提交任务的大数据集群用户信息),Oozie Launcher队列为Oozie Launcher任务可提交的队列,YARN队列为SparkSQL任务可提交的队列(如配置多个,则在SparkSQL节点只可选择除Oozie Launcher队列以外的其他队列)。

  1. 配置完成后,返回[数据开发/调度中心],编辑业务流程中的SparkSQL作业节点时,在节点的[基本信息-高级参数]中选择SparkSQL任务的执行队列为步骤1中配置的YARN队列。

 

SparkSQL组件计算精度说明

对于SparkSQL组件,其计算结果可能会出现精度有误情况,如-2_Ref73038880所示。

表-2 运行结果中精度有误类型列表

数据源表类型

精度有误类型

PostgreSQL

timebitreal

Greenplum

decimalnumericrealtimebit

达梦

timetimestampbitbinary

MySQL

timeyearbitbooleantinyint

Oracle

numberfloat

Vertica

timetimetzgeographygeometry

 

MySQLtinyint(1)类型的字段在注册离线表后,非01的值将被转换为true,造成数据失真。

 

跨组织节点与子流程配合使用限制说明

创建业务流程A,其中增加跨组织(发布)节点N1。创建业务流程B,选择A作为子流程,增加跨组织(接收)节点N2,节点N2监听业务流程A中的节点N1。启动业务流程B,则业务流程B运行过程中,提交业务流程A,流程A运行到发布节点,发布消息。业务流程B接收到发布的消息,如果业务流程B运行结束,则系统会再次启动业务流程B,从而导致流程运行进入无限循环。

为避免上述问题,请在设计业务逻辑时,尽量避免业务流程成环从而导致预期外的无限循环执行。