impala系列:服务API–set

  • Post author:
  • Post category:其他


set语句是对impala的配置,该配置生效于当前session。

语法

SET query_option=option_value

选项

  • ABORT_ON_ERROR:默认为false,如果为true,当发生问题后,不论大小直接停止查询。
  • ALLOW_ERASURE_CODED_FILES:默认为false,为true则会清除在impala中的编码文件。
  • APPX_COUNT_DISTINCT:默认为false,如果为true,则查询时会将COUNT(DISTINCT)查询隐式转换为NDV()函数,结果会不精确,但是性能会提升。
  • BATCH_SIZE:默认为0(即使用预定义的1024),SQL运算一次的行数,增大数值可以让SQL的运算速度更快,但是会占用更多的内存。
  • BUFFER_POOL_LIMIT:默认为MEM_LIMIT配置的80%,MEM_LIMIT默认最小为32M,配置每个节点的内部缓存,如果配置的过大可能会导致OOM。

    使用样例:
-- 直接配置大小
set buffer_pool_limit=8GB;
-- 配置的是MEM_LIMIT的百分比
set buffer_pool_limit=80%;
  • COMPRESSION_CODEC:默认为SNAPPY,对数据文件的压缩方式,有4个选项:SNAPPY、 GZIP、ZSTD和NONE。ZSTD默认等级为3,可以使用ZSTD:10来指定压缩等级。
  • COMPUTE_STATS_MIN_SAMPLE_SIZE:默认为1G,指定impala扫描的最小字节数,如果统计的表为小表,会使抽样语句失效,因为可以非常廉价的获得准确的统计信息,而无需抽样。
  • DEFAULT_JOIN_DISTRIBUTION_MODE:默认值为0(BROADCAST)。impala会优化连接查询,如果都缺少统计信息,会广播连接右侧的表,如果有一个缺少统计信息,则会广播不具有统计信息的表。有两个值可选:0(BROADCAST)和1(SHUFFLE)。没有统计信息的情况下,如果是小表之间的join则使用BROADCAST,如果是大表之间的join则使用SHUFFLE。如果表有统计信息,则不用指定。
  • DEFAULT_SPILLABLE_BUFFER_SIZE:默认值为2097152 (2 MB)。指定写到磁盘时的内存缓存大小,针对没有统计信息的大型表或大型join查询。如果该值很大,会造成巨大的IO请求,尤其是机械硬盘。
  • DISABLE_CODEGEN_ROWS_THRESHOLD:默认值是50000。为impala的codegen机制设置一个截止点,如果低于该截止点则不会使用该机制,因为codegen机制可以有效减少处理每一行的时间,但是初始化时间较长,所以对于小查询,直接处理更加划算。
  • DISABLE_ROW_RUNTIME_FILTERING:默认值为false。该选项缩小了运行时筛选功能的范围。 查询仍然会动态修剪分区,但不会将过滤逻辑应用于分区中的各个行。仅适用于对Parquet表的查询。此选项取决于查询特征和数据分布,所以在极少数情况下会用到。
  • DISABLE_STREAMING_PREAGGREGATIONS:默认为false。该选项会减少对一些没有重复值的列执行的聚合操作,但是可能会让一些聚合操作结果出现异常。
  • DISABLE_UNSAFE_SPILLS:默认为false。如果需要在内存不够时失败,而不是写到磁盘,则使用该选项。
  • ENABLE_EXPR_REWRITES:默认为true。控制是启用还是禁用查询编译时优化。
  • EXEC_SINGLE_NODE_ROWS_THRESHOLD:默认值为100。定义多少行叫小表,如果impala扫描不足指定值,则认为是小表,会关闭并行执行和本机代码生成等优化。
  • EXEC_TIME_LIMIT_S:默认值为0,单位为秒。执行时间超过多久之后会自动终止。
  • EXPLAIN_LEVEL:默认值为0,控制

    explain

    关键字输出信息量的多少。

    • 0 or MINIMAL: 主要用于在非常长的查询中检查 join 顺序,其中常规EXPLAIN输出太长而无法轻松读取。
    • 1 or STANDARD: 默认的详细级别,显示分布式查询的工作逻辑方式。
    • 2 or EXTENDED: 包括有关查询计划程序如何在其决策过程中使用统计信息的其他详细信息,通过收集统计信息,使用查询提示,添加或删除谓词等来了解如何调整查询。
    • 3 or VERBOSE: 最高级别的详细信息,显示每个节点内的“查询片段”。 这个额外的细节主要用于Impala本身内的低级性能测试和调优,而不是用于在用户级别重写SQL代码。
  • IDLE_SESSION_TIMEOUT:默认值为0。控制空闲session持续多久关闭。
  • LIVE_PROGRESS:默认为false。开启时impala会生成一个交互式进度条。
  • LIVE_SUMMARY:默认为false。开启时impala会生成一个更加详细的交互式表格。
  • MAX_ERRORS:默认值为0,也就是1000。最大能容忍的非致命性错误数量。
  • MAX_NUM_RUNTIME_FILTERS:默认为10。查询运行时生成的过滤器个数。每个过滤器都会占用一定量的内存,如果过滤器过多,可能会导致一些潜在的问题。
  • MAX_ROW_SIZE:默认值为524288(512KB)。设置一行读取的最大值。如果一行的大小超过该上线,impala会判断安全的前提下也会继续操作。
  • MAX_SCAN_RANGE_LENGTH:默认值为0(使用HDFS的块的大小)。扫描的范围最大长度。impala每个核心会处理一个扫描范围,如果集群CPU有空闲,降低可能会提高并发,一般建议使用HDFS块的大小。
  • MEM_LIMIT:默认值为0(不限制)。定义查询可在每个节点上分配的最大内存量。 查询可以使用的总内存是MEM_LIMIT乘以节点数,如果超过该限制,查询会被取消。
  • MIN_SPILLABLE_BUFFER_SIZE:默认值为65536(64KB)。溢写到磁盘时,缓冲区的最小使用量,如果设置的过大,可能让查询等待时间变长,而如果太小,那么溢写时可能性能不够。
  • MT_DOP:默认值为0,当在Parquet表上执行COMPUTE STATS和COMPUTE INCREMENTAL STATS语句时会自动设置为4。设置可以使用多线程处理的任务的并行度。
  • NUM_SCANNER_THREADS:默认值为0。每个程序使用的最大的线程数,默认情况下impala会调用最大数量的核数来查询。



版权声明:本文为qq_43578218原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。