历时半年多,Impala 4.4终于发布了!本次更新带来了不少新功能,受限于篇幅,这里简要列举一些,后续文章再挑重点的进行介绍。
支持更多Iceberg表上的语句
支持对 Iceberg V2 表的 UPDATE 语句,用来更新已有数据。
支持 DROP PARTITION 语句删除 Iceberg 表的分区。
支持 OPTIMIZE 语句做 compaction 来清理小文件和delete文件等。
支持读取包含 equality delete 的数据。
支持用SQL语句查询 Iceberg 表的元数据(如history、snapshots等)。
支持建表时指定主键。
此外还优化了Iceberg V2表上的读性能。
历史信息查询
Impala会维护一个内部 Iceberg 表记录历史查询信息,该表由 Coordinator 自动创建,记录了每个查询的基本信息,包括从query profile中提取的信息,如内存使用量、spill-to-disk数据量等(IMPALA-12426)。
值得一提的是,Impala也维护了一个内存中的表来查询正在运行的查询信息 (IMPALA-12540)。
Event Processor增强
EventProcessor是Catalogd中的一个组件,用来从HMS拉取更新(即event)并回放到元数据缓存中。Impala 4.4对EventProcessor做了若干提升,如:
- Event处理失败时自动Invalidate对应的表并继续处理下一个Event (IMPALA-12832)。之前的版本需要管理员执行全局 Invalidate Metadata 来恢复,代价较大。
- 更多的性能提升,如
- 更高效地处理不连续的同表事件(IMPALA-12463)
- ALTER_TABLE事件尽可能不刷新文件元信息(IMPALA-12487)
- 只拉取需要的事件类型(IMPALA-12399、IMPALA-12933)
- 更多的bug修复,如 IMPALA-12561、IMPALA-12719等
- 提高了EventProcessor的可见性,如展示与HMS元数据的延迟、展示当前正在处理的一批事件的信息、日志展示导致事件处理延迟的Top-10个事件等。
更丰富的查询WebUI展示
Impala 4.3开始增加了查询各个Fragment的Timeline展示,Impala 4.4在同个页面增加了资源负载(如CPU、网络、磁盘)的展示。如图
另外/queries页面还支持导入JSON格式的profile,可以展示同样的信息。
Catalogd 和 Statestore HA
Impala的Coordinator天然就是HA的,如果有服务(impalad/catalogd/statestore)挂了,集群还能部分提供服务。Impala 4.4开始支持 Catalogd 和 Statestore 的 HA,保证有单一节点宕机时,集群能正常提供服务。
支持读取JSON格式的表
支持读取文件格式为JSON的Hive表。具体地说,JSON表也是Text格式的表,只不过 SerDe Library 设的是 org.apache.hadoop.hive.serde2.JsonSerDe。这种表也可以启用压缩,Impala都能读取。
通过JDBC读取外部数据源的数据
Impala 4.4开始支持读取 MySQL/Postgres 等提供JDBC接口的数据源,建表语句示例:
sql
CREATE EXTERNAL TABLE alltypes_jdbc_datasource (
id INT,
bool_col BOOLEAN,
tinyint_col TINYINT,
smallint_col SMALLINT,
int_col INT,
bigint_col BIGINT,
float_col FLOAT,
double_col DOUBLE,
date_col DATE,
string_col STRING,
timestamp_col TIMESTAMP)
STORED BY JDBC
TBLPROPERTIES (
"database.type"="POSTGRES",
"jdbc.url"="jdbc:postgresql://localhost:5432/functional",
"jdbc.driver"="org.postgresql.Driver",
"driver.url"="/test-warehouse/data-sources/jdbc-drivers/postgresql-jdbc.jar",
"dbcp.username"="hiveuser",
"dbcp.password"="password",
"table"="alltypes");
其它改进
内存预估改善,如考虑RuntimeFilter的影响(IMPALA-12018)、优化聚合的预估(IMPALA-11842、IMPALA-12183)等。
Query Profile提供更多信息,如DDL/DML在catalogd中执行的Timeline、Executor负载(IMPALA-12834)等。
catalogd网页展示DDL/DML运行时信息和历史信息
支持SHOW VIEWS语句
在executor中预聚合RuntimeFilter(IMPALA-3825)
支持生成DEB/RPM包
开发者名单
以下是Impala 4.4的开发者名单(按英文名首字母排序),感谢他们的贡献!
Abhishek Rawat
Andrew Sherman
Anshula Jain
Csaba Ringhofer
Daniel Becker
David Rorke
Fang-Yu Rao
Fucun Chu
Gabor Kaszab
Gaurav Singh
Gaurav Singh (gaurav1086)
Gergely Farkas
Gergely Fürnstáhl
Halim Kim (halim.kim)
Jason Fehr (jasonmfehr)
Ji Chen (jichen0919)
Joe McDonnell
Kurt Deschler
Laszlo Gaal
Lili Fu (fulili)
Maxwell Guo
Michael Smith
Noemi Pap-Takacs
Peter Rozsa
Pranav Yogi Lodha (pranavyl)
Quanlong Huang (stiga-huang)
Riddhi Jain
Riza Suminto
Sai Hemanth Gantasala
Saurabh Katiyal
Sebastian Pop
Shajini Thayasingh
Surya Hebbar
Tamas Mate
Venu Reddy
Wenzhe Zhou (wzhou-code)
Xiang Yang
Yida Wu
Yifan Zhang (zhangyifan27)
Zhi Tang (ttttttz)
Zihao Ye (Eyizoha)
Zinway Liu
Zoltan Borok-Nagy