如离线分析SparkSQL节点涉及对STDB进行查询等操作,需在[配置管理/参数管理]中,将“离线分析是否加载时空函数”配置为true。 |
离线分析组件是业务流程画布中用来关联离线作业的组件,包含MR、SparkJar、HiveSQL、Java、Sqoop、Shell、SparkSQL、PySpark、RDSSQL类型。
表-1 离线分析组件参数说明
离线分析 |
说明 |
MR、SparkJar、Java、Shell及PySpark |
可以选择[作业开发\任务管理]下对应类型的类型的任务作为模板,加载后适当修改参数,并配置执行队列,即可为完成配置(除执行队列外的其他参数大都是非必配的,部分内置任务的必配参数说明请参见内置任务) 执行队列:选择本组织可以使用的队列 |
HiveSQL |
可以配置作业名称、执行队列、SQL语句,即可完成(其他参数是非必要的)。该组件配置参数说明如下:
|
Sqoop |
|
SparkSQL |
用来关联需要到Hadoop集群上以SparkSQL方式运行的Spark任务,适用于可以用SQL语句描述的批处理场景。其参数说明如下:
关于SparkSQL组件的结算结果,可能存在精度问题,详细说明请参见SparkSQL组件计算精度说明 |
RDSSQL |
下发分析型SQL语句到MPP数据库(Greenplum、Vertica、DLH类型),其参数说明如下:
|
子流程 |
业务流程可以嵌套引用业务流程作为其子流程,其参数说明如下:
当同一个业务流程中,子流程与跨组织节点(属于控制节点组件)配合使用时,存在限制,详细说明请参见跨组织节点与子流程配合使用限制说明 |
SparkSQL任务通过Oozie进行调度,因此每执行一个SparkSQL任务,都将向集群提交一个Oozie Launcher类型的任务,并由该任务拉起一个SparkSQL任务。
为优化SparkSQL任务的集群队列资源参数,防止同时大批量提交任务,使得Oozie Launcher任务将同一队列资源占满,导致SparkSQL任务无法拉起,建议通过配置使得Oozie Launcher和SparkSQL任务提交在不同的队列上。具体操作步骤为:
在集群开启Kerberos认证的情况下,请至[系统]模块下的[系统配置/大数据集群资源]配置页面中,为所在组织配置Kerberos用户及队列信息(在集群开启Kerberos认证的情况下,也可配置提交任务的大数据集群用户信息),Oozie Launcher队列为Oozie Launcher任务可提交的队列,YARN队列为SparkSQL任务可提交的队列(如配置多个,则在SparkSQL节点只可选择除Oozie Launcher队列以外的其他队列)。
配置完成后,返回[数据开发/调度中心],编辑业务流程中的SparkSQL作业节点时,在节点的[基本信息-高级参数]中选择SparkSQL任务的执行队列为步骤1中配置的YARN队列。
对于SparkSQL组件,其计算结果可能会出现精度有误情况,如表-2_Ref73038880所示。
数据源表类型 |
精度有误类型 |
PostgreSQL |
time、bit、real |
Greenplum |
decimal、numeric、real、time、bit |
达梦 |
time、timestamp、bit、binary |
MySQL |
time、year、bit、boolean、tinyint |
Oracle |
number、float |
Vertica |
time、timetz、geography、geometry |
MySQL的tinyint(1)类型的字段在注册离线表后,非0和1的值将被转换为true,造成数据失真。 |
为跨组织(接收)节点配置监听信息时,仅能选择目标业务流程画布内出现的发布节点,不能级联选择子流程中的发布节点。
选择包含跨组织(接收)节点的业务流程作为子流程时:
启动父业务流程,则子流程中的跨组织(接收)节点不生效
直接启动包含跨组织(接收)节点的业务流程,该跨组织(接收)节点正常工作
此外,跨组织节点与子流程配合使用时,可能产生业务成环而导致的无限循环执行,例如:
创建业务流程A,其中增加跨组织(发布)节点N1。创建业务流程B,选择A作为子流程,增加跨组织(接收)节点N2,节点N2监听业务流程A中的节点N1。启动业务流程B,则业务流程B运行过程中,提交业务流程A,流程A运行到发布节点,发布消息。业务流程B接收到发布的消息,如果业务流程B运行结束,则系统会再次启动业务流程B,从而导致流程运行进入无限循环。
为避免上述问题,请在设计业务逻辑时,尽量避免业务流程成环从而导致预期外的无限循环执行。