联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
执行相关
更新时间:11/28/2024, 6:14:36 AM

Map/Reduce任务数量控制

名称 含义 取值

mapred.reduce.tasks

Reduce Tasks的数量。该参数对性能调优有极大帮助,

  • -1

  • 自定义

【高危】ngmr.partition.automerge

Automerge的控制开关,用于减少小文件数量从而控制Map Tasks的数量。

  • true

  • false

【高危】ngmr.partition.mergesize

ngmr.partition.automerge开关打开后,此参数用于控制将多少Partitions Merge在一起。

  • 3

  • 自定义

【高危】ngmr.partition.mergesize.mb

ngmr.partition.automerge开关打开后,此参数用于控制Merge的数据量总和的上限。为-1时表示忽略此限制。(单位:MBytes)

  • 8

  • 自定义

动态分区

名称 含义 取值

hive.exec.dynamic.partition

是否允许动态分区。

  • true

  • false

hive.exec.dynamic.partition.mode

选择动态分区的处理模式。在strict模式下,用户必须至少指定一个静态分区以防止无意间overwrite所有分区;nonstrict模式下,所有分区都可以为动态。

  • strict

  • nonstrict

hive.exec.max.dynamic.partitions

最多允许创建多少动态分区。

  • 1000

  • 自定义

hive.crud.dynamic.partition

是否对单值分区表支持基于动态分区的crud。该参数为true时,可以以单值分区表整表为单位作为insert/update/delete/merge into的目标,否则仅能以单值分区表的指定分区为crud 的目标。

  • true

  • false

hive.optimize.dynamic.partition.insert

控制是否自动对动态分区插入语句进行优化改写。默认为true,表示开启此功能。

使用此开关前,需要将以下参数设置为:hive.enforce.bucketing=true、hive.crud.dynamic.partition=true和hive.exec.dynamic.partition.mode=nonstrict。

  • true

  • false

hive.optimize.dynamic.partition.insert.cluster.by.random

设置对分区非分桶表进行动态分区插入时,是否使用随机个数的reduce task。默认为false,表示最后会用1个reduce task进行插入。

  • true

  • false

执行优化

名称 含义 取值

hive.window.spill.size

一个窗口计算聚合函数时最多允许内存存放多少条记录。如果超出该数值,多余记录会spill至磁盘。如果窗口数量比较多,需要把这个参数设小来降低内存压力以提高稳定性。如果窗口数量少,可以调大这个参数提高性能。

  • 10000

  • 自定义

hive.winfunc.predicate.pushdown

是否对窗口函数采用谓词前推的优化。

  • true

  • false

hive.enforce.bucketing

对当前Session是否强制分桶,主要用于控制bucket表相关的优化。 不要直接去修改此参数,它受其他优化参数控制。

  • true

  • false

hive.enforce.sorting

分桶内部是否默认强制排序。

  • true

  • false

【高危】ngmr.reader.minmaxfilter

适用于列式存储的表,如果查询有过滤条件并且数据块具有最大最小值的统计信息,每次带过滤条件的扫描首先会计算该过滤条件是否满足数据块的最大最小值范围,若不满足就跳过该块,从而节省IO成本。

  • true

  • false

【高危】ngmr.reader.rowfilter

优化开关打开后如果表有过滤条件,就先读取过滤条件的字段并计算filter,若满足条件就去读取其他字段,否则检查下一行。适用于超宽表扫描。

  • true

  • false

【高危】hive.udf.codegen

作用于UDF代码生成过程的优化开关,可用于加速表达式求值。

  • true

  • false

inceptor.throw.zero.divisor.exception

控制当UDF发生除零计算时是否报错,为true表示报错。

  • true

  • false

inceptor.select.distinct.group.by.enabled

是否支持select distinct + UDAF语句。

  • true

  • false

【高危】inceptor.skip.optimizer

是否放弃使用SQL优化器。适用于Hyperbase中工作负载存在大量并发执行的简单SQL语句,降低编译成本。

  • true

  • false

hive.optimize.readcolumn

是否采用优化方法访问字段。当在Hyperbase中执行形如“select count(*) where xx is null”的语句时,请关闭该开关。

  • true

  • false

hive.groupby.iter.single.rollua

是否优化Rollup性能,包括对Hash表和Null Key Map端的优化。

  • true

  • false

hive.window.iterator.directly

是否对窗口函数迭代器的性能进行优化。目前支持优化ROW_NUMBER、RANK、CSUM这三种窗口函数。

  • true

  • false

ngmr.dd.local.mode.auto

是否自动使用local mode来查询数据字典表(system中的所有表)。默认使用local mode。

  • true

  • false

hive.decimal.wrdecimal.enabled

是否使用星环科技自身的WRDecimal实现Decimal类型。WRDecimal是基于HiveDecimal的Decimal实现方式,解决了HiveDecimal在处理Decimal类型时的一些问题的限制。该参数默认值为True,如果需要更改取值,请在所有节点的hive-site.xml中配置,并且重启Inceptor后才会生效。

  • true

  • false

hive.max.partition.locks.per.table

用于控制 SELECT \* FROM table WHERE <condition> 这类SQL语句在执行时是否对全表加锁。当 condition 中涉及到的分区数小于等于此阈值时,仅对分区加锁,不影响其他分区的事务操作,以优化系统性能;超过此阈值时,对全表加锁。此参数不建议设置过大

当此参数设置为0时,表示SELECT \* FROM table WHERE condition这类查询均对全表加锁。

  • 3

  • 自定义

partition.crud.validate.check.and.cast

用于控制 TRUNCATE TABLE table_name PARTITION (<partition_key> = <partition_value>,…​) 语句是否对 <partition_value> 的格式进行检查并转换。默认为 true,表示会自动检查 <partition_value> 的格式,如果为非标准格式,则会自动转换为标准格式,再进行查找和执行。

  • true

  • false

数据稽查

名称 含义 取值

inceptor.data.audit

当前session是否开启数据稽查功能。 该开关是inceptor.data.audit.statement、inceptor.strict.evaluate和inceptor.notnull.audit的Top Level控制。

  • true

  • false

inceptor.data.audit.statement

如果启动该开关,在SQL执行结束时会输出:“N rows were wrong during query, please check the error table for details.”。随inceptor.data.audit开启而默认打开。

  • true

  • false

inceptor.strict.evaluate

用来控制是否在遇到脏数据时报Exception。随inceptor.data.audit开启而默认打开。如果已知Table中有脏数据建议关闭该开关。

  • true

  • false

inceptor.notnull.audit

是否对NOT NULL constraint进行检查。开关打开后,对于有NOT NULL限制的字段,如果发现有null值则该记录写入Error Table。随inceptor.data.audit开启而默认打开。

  • true

  • false

inceptor.insert.type.conversion

在INSERT数据时,是否依照TableSchema定义的字段类型自动进行类型转换。

  • true

  • false

JOIN

名称 含义 取值

ngmr.mapjoin.autoconvert

是否将满足MapJoin条件的JOIN自动按MapJoin的方式处理。

  • true

  • false

【高危】inceptor.mapjoin.filter

是否启用MapJoin Filter优化。优化效果:实现MapJoin时,可根据维度表的运行结果在运行时动态生成事实表的过滤条件。

  • true

  • false

【高危】inceptor.mapjoin.filter.autogen

是否对自动转化的MapJoin使用mapjoin.filter优化。配合mapjoin.filter开关,可以适用于MapJoin小表有最大值/最小值过滤机会的场景。

  • true

  • false

【高危】inceptor.filterjoin.enabled

是否合并级联MapJoin,也就是一个大表同时和多个小表做MapJoin。

  • true

  • false

inceptor.filterjoin.pushdown.filter.enabled

是否在级联Join中下推小表过滤条件作为filter。

  • true

  • false

hive.ignore.mapjoin.hint

是否忽略MapJoin Hint。为true时表示忽略。

  • true

  • false

ngmr.broadcast.join

Broadcast Join的优化开关。

  • true

  • false

ngmr.broadcast.parallel.smalltable.collect

执行Broadcast Join时是否使用并发方式广播小表。

  • true

  • false

ngmr.broadcast.join.smalltable.size

允许参与Broadcast Join的小表的行数上限。

  • 100000L

  • 自定义

inceptor.filterjoin.enabled

控制是否开启FilterJoin优化。FilterJoin是基于MapJoin的优化,适用于语句中有多个级联MapJoin的场景,加快这类语句的执行速度。

  • true

  • false

inceptor.maxjoincount.threshold

允许SQL语句中存在的最大JOIN个数。

  • 100

  • 自定义

Stargate

名称 含义 取值

【高危】stargate.debug.log

是否把对Stargate进行Debug时的信息写入日志。

  • true

  • false

stargate.dispatcher

是否启用Stargate的Dispatcher。

  • true

  • false

stargate.advance.filter.generator

在Stargate中是否启用高级Filter生成器。

  • true

  • false

stargate.dimension.enabled

是否启用Stargate中的dimension下推。

  • true

  • false

stargate.orderby.pushdown

Stargate是否将能正常解析的OrderBy的信息下推到Stargate数据源表中,默认为true(下推)。

  • true

  • false

stargate.limit.pushdown

Stargate是否将能正常解析的Limit的信息下推到Stargate数据源表中,默认为true(下推)。

  • true

  • false

stargate.andor.filter.convert

Stargate Filter默认不解析Or在And之下的过滤条件,例如:

WHERE col1 > 1 AND (col2 < 2 OR col3 > 3)
复制

开启该开关后,Stargate将会对该Filter条件进行转换并解析后下推到Stargate数据源表中,默认为true(开启转换)。

  • true

  • false

ngmr.stargate.filter.equal.pushdown

是否下推等值的过滤条件,如 

WHERE a=x
复制
  • true

  • false

ngmr.stargate.filter.notequal.pushdown

是否下推非等值的过滤条件,如 

WHERE a != x
复制
  • true

  • false

ngmr.stargate.filter.in.pushdown

是否下推IN条件过滤,如

WHERE a IN (x,y)
复制
  • true

  • false

ngmr.stargate.filter.notin.pushdown

是否下推NOT IN条件查询,如 

WHERE a NOT IN (x,y)
复制
  • true

  • false

ngmr.stargate.filter.like.pushdown

是否下推LIKE及RLIKE条件查询,如 

WHERE a LIKE "x_"
WHERE a RLIKE "x*"
复制
  • true

  • false

ngmr.stargate.filter.notlike.pushdown

是否下推NOT LIKE及NOT RLIKE条件查询,如 

WHERE a not LIKE "x_"
WHERE a not RLIKE "x*"
复制
  • true

  • false

ngmr.stargate.filter.isnull.pushdown

是否下推IS NULL条件查询,如 

WHERE a IS NULL
复制
  • true

  • false

ngmr.stargate.filter.isnotnull.pushdown

是否下推IS NOT NULL条件查询,如 

WHERE a IS NOT NULL
复制
  • true

  • false

ngmr.stargate.filter.between.pushdown

是否下推BETWEEN条件查询,如 

WHERE a BETWEEN 1 AND 10
复制
  • true

  • false

ngmr.stargate.filter.greaterthan.pushdown

是否下推 > 条件查询,如 

WHERE a > 10
复制
  • true

  • false

ngmr.stargate.filter.equalorgreaterthan.pushdown

是否下推 >= 条件查询,如 

WHERE a >= 10
复制
  • true

  • false

ngmr.stargate.filter.lessthan.pushdown

是否下推 < 条件查询,如 

WHERE a < 10
复制
  • true

  • false

ngmr.stargate.filter.equalorlessthan.pushdown

是否下推 <= 条件查询,如 

WHERE a <= 10
复制
  • true

  • false

ngmr.stargate.filter.range.pushdown

是否下推范围过滤相关条件查询,如 

WHERE a > 10
WHERE a >= 10
WHERE a < 10
WHERE a <= 10
WHERE a BETWEEN 10 AND 20 
复制
  • true

  • false

PL/SQL

名称 含义 取值

plsql.client.dialect

客户端采用的PL/SQL方言。

  • oracle

  • db2

plsql.server.dialect

服务器端采用的PL/SQL方言。

  • oracle

  • db2

plsql.process.strict

PLSQL执行过程中如果发生异常,会影响到当前会话的PLSQL进程状态(因为进程中包含的会话级的全局变量可能已经损坏),默认情况会要求必须重启一个会话(命令行),否则不允许继续执行其他的PLSQL语句。如果用户不想每次发生异常都重启命令行,且确定自己的程序不会读写全局变量,可以将该开关设为false关闭这一限制。

  • true

  • false

plsql.show.sqlresults

在PL/SQL中执行SELECT操作时,是否打印查询结果。

  • true

  • false

plsql.use.slash

是否在PL/SQL中支持“/”操作符。

  • true

  • false

plsql.cache.output

PL/SQL中PUT_LINE有如下行为:如果程序正常结束,会统一打印到终端;如果程序中出现了未被处理的异常,默认在终端只打印异常栈,PUT_LINE内容需要去hive.log中查看;考虑到对于异常的处理方式给调试带来的不便,现在提供此开关,开关开启时可将PUT_LINE内容连同异常栈一起打印到终端帮助调试。建议仅在调试时开启,否则会带来资源压力。

  • true

  • false

plsql.catch.hive.exception

是否在PL/SQL中捕捉Hive异常。该变量需要在真正运行存储过程而不是创建存储过程的时候设置。

  • true

  • false

plsql.optimize.dml.precompile

是否对PL/SQL中的DML开启预编译。

  • true

  • false

plsql.optimize.dml.precompile.deopt

开启plsql.optimize.dml.precompile后如果预编译失败是否进行退优化,即采用每次运行都编译的执行方式。

  • true

  • false

plsql.compile.dml.check.semantic

是否在编译期对SQL进行语义检查。

  • true

  • false

hive.server2.idle.plsql.operation.timeout

PLSQL语句的timeout控制,单位毫秒。PL/SQL作为控制流,可能会包含多个执行时间较长的SQL,因此用该参数单独控制PL/SQL控制流的timeout。

  • 0

  • 自定义

plsql.check.driver.env

是否检查PL/SQL有没有正运行在非driver环境中。如果关闭,请谨慎使用。

  • true

  • false

plsql.runtime.profile

是否对PL/SQL运行时性能进行检查。

  • true

  • false

plsql.cursor.local.job.record.timeout.weight

控制local mode下游标的执行时间限制。设置该参数后例如100,local mode模式下游标的执行时间限制为plsql.cursor.local.job.record.timeout.weight和ngmr.local.job.record.timeout.ms的乘积,如果游标执行时间超过该乘积,那么将会被kill掉。

  • 100

  • 自定义