Apache Impala 4.2概览

Apache Impala 4.2概览

Impala 4.2于2022年12月发布,共有265个commits,有37位开发者贡献了代码。

1. 新功能

1.1 Iceberg相关新功能

  • 支持读取使用position delete模式的Iceberg V2表 (IMPALA-11484)

  • 支持读取Iceberg表的虚拟列,如 INPUT__FILE__NAME, FILE__POSITION等(IMPALA-801, IMPALA-8011, IMPALA-11350, IMPALA-11529)

  • 用INSERT OVERWRITE支持部分Iceberg表的Compaction(IMPALA-11378)

  • 支持iceberg表的expire snapshot功能 (IMPALA-11362)
    ALTER TABLE EXECUTE expire_snapshots()

  • 支持包含多个文件格式的Iceberg表 (IMPALA-10610)

  • 支持在Iceberg表上的 SELECT 和 COMPUTE STATS 语句使用采样功能(IMPALA-11582)

  • 支持创建Iceberg表时使用 stored by ICEBERG stored as … 语法,如 STORED BY ICEBERG STORED AS PARQUET(IMPALA-11268)

  • 支持使用 CREATE TABLE LIKE 创建 Iceberg 表(IMPALA-11287)

  • 优化Iceberg表的count(*)查询,使用元数据返回行数(仅限没有条件的简单查询)(IMPALA-11279)

  • 在 DESCRIBE FORMATTED 和 SHOW PARTITIONS 中展示 partition 信息(IMPALA-11334、IMPALA-11320)

  • 下推更多的谓词、RuntimeFilter表到 Iceberg,如
    IMPALA-11283: Push-down IS_NULL and NOT_NULL predicates to iceberg
    IMPALA-11289: Push-down compound predicates to iceberg
    IMPALA-11446: Push-down NOT_IN predicate to iceberg
    IMPALA-10453: Support file pruning via runtime filters on Iceberg

1.2 Kudu相关新功能和改进

  • 支持在Kudu的range partition中设置不同的hash schema(IMPALA-11430)。该功能需要Kudu升级到1.17(KUDU-2671)
  • 优化了写入Kudu表时有主键重复的场景的写入性能。(IMPALA-10465)
  • 下推DATE类型的常量谓词到Kudu中(IMPALA-11496)

1.3 数据类型

  • 支持BINARY字段类型 (IMPALA-9482)
  • Parquet表支持在SELECT list中直接使用struct类型(IMPALA-9496,注:4.1只有ORC表支持该功能)
  • 支持在SELECT list中直接使用map字段 (IMPALA-10918)
  • 支持在SELECT * 中显示嵌套类型,即array、map、struct字段。使用查询选项 EXPAND_COMPLEX_TYPES 控制(IMPALA-9499)

1.4 新增语法

  • 支持 unset all 语法清空当前session的所有query option(IMPALA-11233)
  • 支持 CREATE/ALTER VIEW SET/UNSET TBLPROPERTIES (IMPALA-11420)
  • 支持ALTER TABLE ADD PARTITION语句指定文件格式(IMPALA-9460)
  • 支持创建Bucket表(IMPALA-3119)

1.5 元数据相关

  • File listing直接跳过非数据目录,如前缀为 “.”,“_tmp.”,“_spark_metadata” 的目录,用启动参数 ignored_dir_prefix_list 配置前缀列表(IMPALA-11469)
  • LOAD DATA语句触发HMS的Insert event,其它Impala集群或Hive Replication任务可借此感知到数据变化 (IMPALA-8592)

1.6 Security相关

  • 支持TLS 1.3 (IMPALA-10069)
  • impala-shell使用hs2-http协议时支持Kerberos(IMPALA-10745)
  • Ranger Audit日志中合并同个表下的所有字段访问(IMPALA-11269)
  • 对于non-superuser创建的view,SELECT时检查view中各表的读权限(IMPALA-10122)

1.7 其它新功能

  • 初步支持Hive中的GenericUDF (IMPALA-11162)。现在还有一些限制,如不支持Decimal和复杂类型,不支持创建永久函数(即重启后需要重建函数)。
  • Impala-shell支持列式打印结果,类似MySQL中的 “\G”(IMPALA-1682)
  • 新增统计函数 corr(), covar_samp() 和 covar_pop()(IMPALA-11205)
  • 提供解析minidump的脚本(IMPALA-11226)
  • 支持阿里云OSS(IMPALA-11683)

2. 性能提升

  • 优化了排序算子中的codegen逻辑(IMPALA-11474)
  • 支持Ozone的 remote file handle caching (IMPALA-10214, IMPALA-10375)
  • 优化了 MT_DOP>1 时scan fragment instance之间scan range的调度可能倾斜的问题(IMPALA-11539)
  • 升级gcc依赖版本,从7.5.0升级为10.4.0(IMPALA-9999)
  • 只返回一行的查询不需要启用result spooling (IMPALA-11418)
  • Spill到远程存储(HDFS/S3)的临时数据使用batch模式读回(IMPALA-10791)
  • 优化了高精度类型的计算(IMPALA-11504)
  • 优化了Remote Data Cache场景下的open操作(IMPALA-11704)
  • 支持通过Unix Domain Socket使用 KRPC(IMPALA-11129)

3. 重要修复

  • 元数据未加载的view之前是当成table来展示(比如在HUE中),只有当该view被初次使用过后,即元数据加载之后才能显示正确的类型(table/view)。Impala-4.2修复了该问题,在冷启动时就把表类型(table/view)加载进来。(IMPALA-9670)
  • Thrift升级为0.16.0以修复一些CVE
  • 正确处理并发的Iceberg写入操作。在之前版本中,如果INSERT OVERWRITE和INSERT语句同时执行,有可能丢失INSERT的数据。(IMPALA-11377)
  • 修复了impala-4.0之后 minute(“12:05:05”) 等细粒度时间函数返回NULL的问题(IMPALA-11355)
  • 修复了HBase表显示的字段顺序与Hive不一致的问题(IMPALA-886)
  • 修复了KRPC RowBatch传输中的untracked memory(IMPALA-6684)
  • 优化了statestore与executor间的不必要的通信流量(IMPALA-11659)
  • 优化了更新频繁的Iceberg表导致Local Catalog coordinator不断刷新元数据的问题(IMPALA-11721)

你可能感兴趣的:(Impala,apache,impala)