发行说明
Apache Druid 37.0.0 包含了来自 29 位贡献者的超过 255 项新功能、错误修复、性能增强、文档改进以及额外的测试覆盖。
请参阅 完整的变更列表 以获取更多详细信息,包括错误修复。
在升级到 Druid 37.0.0 之前,请查阅 升级说明 和 不兼容的变更。如果您跨多个版本进行升级,请参阅 升级说明 页面,该页面列出了最近 Druid 版本的升级说明。
重要功能、变更和弃用
本节包含有关新功能和现有功能的重要信息。
基于 Hadoop 的摄入
已移除对基于 Hadoop 的摄入的支持。此功能在 Druid 34 中已被弃用。
请使用 Druid 的其他支持的摄入方法,例如基于 SQL 的摄入或使用 Kubernetes 的无 MiddleManager 摄入。
查询黑名单
现在,您可以使用 Broker API (/druid/coordinator/v1/config/broker) 创建查询黑名单,按数据源、查询类型或查询上下文动态阻止查询。黑名单在不重启 Druid 的情况下生效。阻止规则使用 AND 逻辑,这意味着必须匹配所有条件。
以下示例阻止了 wikipedia 数据源上查询上下文参数 priority 等于 0 的所有 groupBy 查询。
POST /druid/coordinator/v1/config/broker
{
"queryBlocklist": [
{
"ruleName": "block-wikipedia-groupbys",
"dataSources": ["wikipedia"],
"queryTypes": ["groupBy"],
"contextMatches": {"priority": "0"}
}
]
}
基于 Overlord 的压缩的轻量压缩(实验性)
现在您可以配置轻量压缩,以便在升级现有已压缩段时仅压缩新摄入的段。当 Druid 升级段时,它会更新元数据,而不是再次消耗资源进行压缩。您可以使用原生压缩引擎或 MSQ 任务引擎。
使用 mostFragmentedFirst 压缩策略,并为轻量压缩设置基于行数百分比或基于字节的阈值。
级联重新索引(实验性)
通过级联重新索引,您现在可以定义基于时间的规则,根据数据的生命周期自动应用不同的压缩配置。虽然标准自动压缩在整个数据源上应用单一的扁平配置,但级联重新索引允许您根据数据的特征定制压缩设置。
例如,您可以将近期数据保留在小时段中,而在 90 天后自动汇总为天段,以减少段数量。您还可以添加基于年龄的行删除(例如从旧数据中剔除机器人流量)、更改压缩设置或随着数据老化转移到粒度更粗的汇总。规则在监督器(supervisor)规范中内联定义。
您必须将压缩监督器与 MSQ 任务引擎配合使用才能使用级联重新索引。
多监督器摄入
多监督器摄入现已全面可用。您可以运行多个流处理监督器,将数据摄入到同一个数据源中。
只读授权器
为 Druid 添加了 ReadOnly 授权器。这是 Druid 的首个全局授权器。该授权器对所有非 READ 操作实施全局限制,无论个人用户权限如何,都会拒绝这些操作。您可以使用此功能确保特定授权器的所有用户仅限于 READ 访问权限。
存在一个已知限制,即某些端点目前即使在只读模式下也需要 WRITE 权限,例如 GET /druid/indexer/v1/supervisor。这些操作将会失败。
Thrift 输入格式
作为 Thrift 贡献者扩展的一部分,Druid 现在支持使用 InputFormat 对 Kafka 和 Kinesis 流摄入进行 Thrift 编码的数据解析。此前,Druid 通过解析器支持此功能,解析器已在 Druid 37 中移除。
要使用此功能,必须将 druid-thrift-extensions 添加到您的扩展加载列表中。
增量缓存
增量段元数据缓存 (useIncrementalCache) 现已全面可用,默认值为 ifSynced。Druid 会阻止从缓存中读取数据,直到它在成为领导者后至少与元数据存储同步一次。
基于 Kubernetes 的任务管理
此扩展现已全面可用。
动态默认查询上下文
现在,您可以将默认查询上下文参数作为动态配置添加到 Broker。这允许您覆盖运行时属性中设置的静态默认值,而无需重启部署或单独更新多个查询。Druid 根据以下优先级应用查询上下文参数:
- 查询中包含的查询上下文
- 设置为 Broker 上动态配置的查询上下文
- 运行时属性中设置的查询上下文参数
- Druid 自带的默认值
请注意,与其他 Broker 动态配置一样,这是尽力而为的。在某些情况下可能无法应用设置,例如当 Broker 最近刚启动且尚未收到配置,或者 Broker 无法联系 Coordinator 时。如果查询上下文参数对于您的所有查询都至关重要,请将其设置在运行时属性中。
sys.queries 表(实验性)
新的系统查询表提供了有关当前正在运行和最近完成的、使用 Dart 引擎的查询的信息。此表默认处于关闭状态。要启用该表,请设置以下内容:
druid.sql.planner.enableSysQueriesTable = true
作为此更改的一部分,/druid/v2/sql/queries API 现在支持 includeComplete 参数,用于显示最近完成的查询。
使用压缩监督器的自动压缩
使用压缩监督器的自动压缩已得到改进,现已全面可用,并成为推荐的默认方式。自动压缩任务现在以 auto 为前缀,而不是 coordinator-issued。
作为改进的一部分,压缩状态现在存储在中央位置,即一个新的 indexingStates 表中。单个段只需存储指向其完整压缩状态的唯一引用 (indexing_state_fingerprint)。
由于单个数据源中的许多段共享相同的底层压缩状态,这大大减少了自动压缩的元数据存储需求。
为了向后兼容,Druid 继续在每个段中持久化详细的压缩状态。此功能将在未来的版本中移除。
您可以通过在集群压缩配置中将 storeCompactionStatePerSegment 设置为 false 来停止存储详细压缩状态。如果您将其关闭并需要降级,Druid 需要重新压缩自您更改配置以来已压缩的所有段。
此更改对元数据存储和元数据缓存有升级影响。有关详细信息,请参阅 使用压缩监督器的自动压缩的元数据存储 升级说明。
针对实时服务器的 Broker 层级选择
在 Brokers 上添加了 druid.broker.realtime.select.tier 和 druid.broker.realtime.balancer.type,以选择性地覆盖 Broker 针对实时服务器的层级选择和负载均衡策略。如果未设置这些属性(默认情况),实时服务器将继续使用现有的适用于历史和实时服务器的 druid.broker.select 和 druid.broker.balancer 配置。
Web 控制台中的手动 Broker 路由
您现在可以配置从 Web 控制台发出的查询由哪个 Broker 处理。如果某些 Broker 无法查看某些数据层级,并且您知道您正在查询的数据仅在特定层级上可用,则可能需要这样做。
要指定 Broker,请将以下配置添加到 web-console/console-config.js:
consoleBrokerService: 'druid/BROKER_NAME'
Consul 扩展
贡献者扩展 druid-consul-extensions 允许 Druid 集群使用 Consul 进行服务发现和 Coordinator/Overlord 领导者选举,而不是 ZooKeeper。该扩展支持 ACL、TLS/mTLS 和指标。
在切换到 Consul 之前,您需要跨集群设置 druid.serverview.type=http 和 druid.indexer.runner.type=httpRemote。
功能领域及相关变更
本节包含按领域划分的详细发行说明。
Web 控制台
更改了存储列显示
对 Web 控制台中存储列的显示方式进行了以下改进:
- 改进了压缩配置视图,以:
- 将 Current size 重命名为 Assigned size。
- 将 Max size 重命名为 Effective size。它现在显示
max_size和storage_size之间的较小值。最大大小仍显示为工具提示。 - 更改了使用情况计算,使其使用
effective_size。
Web 控制台的其他改进
- 向
WorkerStats添加了workerDesc,这使得更容易识别 worker 的运行位置 #19171 - 将 Dart 唯一执行 ID (
dartQueryId) 和sqlQueryId添加到 Web 控制台的 Details 面板 #19185 - 添加了对在 Web 控制台中显示已完成的 Dart 查询的支持 #18940
- 向 Services 页面添加了详细信息对话框 #18960
- 添加了图标以指示数据何时加载到虚拟存储中,包括显示数据所有计数器的工具提示 #19010
- 添加了对 Dart 报告的支持 #18897
- 更改了活动 worker 的标准:任何非零的行、文件、字节、帧或墙上时间足以认为 worker 处于活动状态 #19183
- 将 Cancel query 选项更改为仅在查询处于已接受或运行状态时显示 #19182
- 更改了当前 Dart 查询面板的排序方式,以按以下顺序显示查询:RUNNING、ACCEPTED,然后是 COMPLETED。RUNNING 和 ACCEPTED 查询按最近优先(基于时间戳)排序。COMPLETED 查询按完成时间排序 #19237
摄入
截断字符串列
使用 StringColumnFormatSpec 配置来设置您摄入的字符串维度列的最大长度:
- 对于特定维度:
dimensionSchema.columnFormatSpec.maxStringLength - 对于特定作业:
indexSpec.columnFormatSpec.maxStringLength - 对于集群范围:
druid.indexing.formats.maxStringLength
Druid 会截断任何长于指定长度的字符串。默认是不截断字符串值。
#19146 #19258 (https://github.com/apache/druid/pull/19198)
摄入的其他改进
- 加速了 Overlord 上的任务调度 #19199
基于 SQL 的摄入
基于 SQL 的摄入的其他改进
- 添加了对执行基于 SQL 的摄入时虚拟存储架构(virtual storage fabric)的支持 #18873
- 添加了对
StorageMonitor的支持,以便 MSQ 任务引擎任务始终发出taskId和groupId#19048 - 改进了 worker 取消功能 #18931
- 改进了异常处理 #19234
流式摄入
更改了自动伸缩的任务启动方式
自动伸缩中 taskCountMin 和 taskCountStart 的行为已更改。Druid 现在通过按以下顺序检查配置来计算要启动的初始任务数:taskCountStart(可选),然后是 taskCount(在 ioConfig 中),最后是 taskCountMin。
改进了查询隔离
在流监督器规范(Kafka、Kinesis 和 Rabbit)中添加了 serverPriorityToReplicas 参数。这允许操作员将任务副本分配给不同的服务器优先级,以用于实时索引任务。类似于历史层级,这实现了 Peons 上混合工作负载场景的查询隔离,允许某些任务副本处理特定优先级的查询。
流式摄入的其他改进
查询
groupBy 查询配置
添加了一个新的 groupBy 查询配置属性 druid.query.groupBy.maxSpillFileCount,以限制每个查询创建的溢出文件的最大数量。当超过限制时,查询会失败并显示清晰的错误消息,而不是在溢出文件合并期间导致历史节点内存不足。该限制还可以使用查询上下文参数 maxSpillFileCount 按查询覆盖。
改进了嵌套聚合的处理
Druid 现在可以合并两个在中间有投影(projection)的聚合。例如,以下查询
SELECT
hr,
UPPER(t1.x) x,
SUM(t1.cnt) cnt,
MIN(t1.mn) mn,
MAX(t1.mx) mx
FROM (
SELECT
floor(__time to hour) hr,
dim2 x,
COUNT(*) cnt,
MIN(m1 * 5) mn,
MAX(m1 + m2) mx
FROM druid.foo
WHERE dim2 IN ('abc', 'def', 'a', 'b', '')
GROUP BY 1, 2
) t1
WHERE t1.x IN ('abc', 'foo', 'bar', 'a', '')
GROUP BY 1, 2
可以简化为以下内容
SELECT
FLOOR(__time TO hour) hr,
UPPER(dim2) x,
COUNT(*) cnt,
MIN(m1 * 5) mn,
MAX(m1 + m2) mx
FROM druid.foo
WHERE dim2 IN ('abc', 'a', '')
GROUP BY 1, 2
查询的其他改进
- 向 Dart 查询报告中添加了
durationMs#19169 - 改进了错误处理,以便在列分析遇到错误时保留行签名列顺序 #19162
- 改进了 GROUP BY 性能 #18952
- 改进了表达式过滤器,以便在可能时利用专门的虚拟列,从而提高查询性能 #18965
集群管理
新的 Broker 层级选择策略
操作员现在可以配置两个新的 Broker TierSelectorStrategy 实现:
strict- 仅选择优先级与配置列表匹配的服务器。配置示例:druid.broker.select.tier=strict和druid.broker.select.tier.strict.priorities=[1]。pooled- 在配置的优先级之间汇集服务器并从中进行选择,允许查询使用多个优先级层级以提高可用性。配置示例:druid.broker.select.tier=pooled和druid.broker.select.tier.pooled.priorities=[2,1]。
您还可以使用 druid.broker.realtime.select.tier 为实时服务器配置这些策略。
Druid 操作符
Druid 操作符现在位于其自己的仓库中:apache/druid-operator。
基于成本的自动伸缩器算法
基于成本的自动伸缩算法已更改:
- 当每分区滞后显著时,更积极地向上扩展。
- 根据滞后严重程度和余量放宽每个任务的分区数增加限制。
- 在接近
taskCountMax时保持保守行为,避免负面的余量效应。
集群管理的其他改进
- 为服务健康状况添加了
/status/ready端点,以便外部负载均衡器可以更好地处理优雅关闭 #19148 - 添加了一个可配置选项,用于在基于成本的自动伸缩的任务运行期间进行缩减 #18958
- 将
storage_size添加到sys.servers,以便在使用虚拟存储架构时检索历史节点的磁盘缓存大小 #18979 - 添加了用于基于成本的自动伸缩器计算新任务数的日志 #18929
- 将伸缩计算方式从基于平方根的公式更改为对数公式,这在任务计数较低且存在数百万滞后时提供了更好的应急恢复 #18976
- 改进了历史节点启动期间缓存段的加载速度 #18489
- 通过并行化缓冲区初始化改进了 Broker 启动时间 #19025
- 改进了 MSQ 任务引擎 worker 失败的堆栈跟踪,以便它们被保留 #19049
- 在负载滞后条件下改进了基于成本的自动伸缩器的性能 #18991
数据管理
每个段的超时配置
您现在可以使用动态配置为特定数据源中的段设置超时。
POST /druid/coordinator/v1/config/broker
{
"perSegmentTimeoutConfig": {
"my_large_datasource": { "perSegmentTimeoutMs": 5000, "monitorOnly": false },
"my_new_datasource": { "perSegmentTimeoutMs": 3000, "monitorOnly": true }
}
}
这在不同数据源具有不同性能特征时非常有用——例如,允许大数据集使用更长的超时时间。
持久存储清理器
持久存储清理器现在支持 MSQ 查询结果的可配置基于时间的保留。以前,查询结果是针对所有已知任务保留的,这对于已完成的任务来说不可靠。通过此更改,查询结果根据任务创建时间在可配置的时间段内保留。
新的配置属性 druid.msq.intermediate.storage.cleaner.durationToRetain 控制查询结果的保留期。默认保留期为 6 小时。
数据管理的其他改进
- 添加了
druid.storage.transfer.asyncHttpClientType配置,该配置指定用于 S3 传输的异步 HTTP 客户端:crt用于 Amazon CRT,或netty用于 Netty NIO #19249 - 添加了一种自动清理 HDFS 存储上的中间文件的机制 #19187
指标和监控
buildRevision 字段
所有 Druid 指标现在都包含一个 buildRevision 字段,以帮助识别发出指标的 Druid 服务器的 Git 构建修订版本。您可以使用此信息来验证集群中的所有节点是否运行预期的版本。
监控监督器状态
当 druid.monitoring.monitors 中启用了 SupervisorStatsMonitor 时,添加了一个新的 supervisor/count 指标。该指标为 Prometheus、StatsD 和其他指标系统报告每个监督器的状态,例如 RUNNING 或 SUSPENDED。
改进的 groupBy 指标
GroupByStatsMonitor 现在提供以下指标:
mergeBuffer/bytesUsedmergeBuffer/maxBytesUsedmergeBuffer/maxAcquisitionTimeNsgroupBy/maxSpilledBytesgroupBy/maxMergeDictionarySize
过滤指标
操作员可以设置 druid.emitter.logging.shouldFilterMetrics=true 来限制日志发射器写入的指标。或者,他们可以将 druid.emitter.logging.allowedMetricsPath 设置为 JSON 对象文件,其中键是指标名称。缺少自定义文件会导致警告,并使用捆绑的 loggingEmitterAllowedMetrics.json。警报和其他非指标事件总是被记录。
新的 Broker 指标
添加了 segment/schemaCache/rowSignature/changed 和 segment/schemaCache/rowSignature/column/count 指标,以在 Broker 为每个数据源初始化和更新段元数据缓存中的行签名时公开事件。
指标和监控的其他改进
- 将以下指标添加到 Prometheus 的默认设置中:
mergeBuffer/bytesUsed和mergeBuffer/maxBytesUsed#19110 - 将压缩模式添加到
compact/task/count指标 #19151 - 添加了对记录和发出 SQL 动态参数值的支持 #19067
- 添加了
ingest/rows/published,所有任务类型都会发出此指标以表示成功发布的段的总行数 #19177 - 添加了
queries和totalQueries计数器,反映对实时服务器进行以检索实时数据的查询 #19196 - 为 Coordinator 添加了
tier/storage/capacity指标。此指标保证反映层级中所有历史节点配置的总StorageLocation大小 #18962 - 为 MSQ 任务引擎
ChannelCounters添加了虚拟存储架构的新指标:loadBytes、loadTime、loadWait和loadFiles#18971 - 向
StorageMonitor添加了storage/virtual/hit/bytes、storage/virtual/hold/count和storage/virtual/hold/bytes指标 #18895 #19217 - 为
TaskCountStatsMonitor添加了流任务的supervisorId维度 #18920 - 将
StorageMonitor更改为始终开启 #19048 - 改进了自动伸缩器的指标,以便它们都发出相同的指标:
supervisorId、dataSource和stream#19097
扩展
Kubernetes
为 kubernetes-overlord-extensions 中的 Vert.x HTTP 客户端添加了一个新的 WebClientOptions 透传。操作员现在可以通过使用 Druid 运行时属性来配置底层 Vert.x WebClientOptions 对象上的任何属性。您可以配置的一些选项包括连接池大小、keep-alive 超时和空闲超时。这对于具有关闭空闲连接的中间负载均衡器的环境特别有用。大多数 Druid 部署不需要此配置。
gRPC
gRPC 查询扩展现在会在客户端取消或断开连接时取消正在进行的查询。
Iceberg
GCS 仓库
Iceberg 输入源现在支持 GCS 仓库。要使用此功能,除了 Iceberg 扩展外,还必须加载 druid-google-extensions 扩展 #19137
过滤器
使用 Iceberg 输入源时,您现在可以为非分区列配置剩余过滤器。将 Iceberg 输入源中的 residualFilterMode 设置为以下值之一:
ignore:(默认)摄入剩余行并记录警告日志,除非被transformSpec过滤。fail:检测到剩余过滤器时,使摄入作业失败。使用此选项可确保过滤器仅针对分区列。
HDFS 存储
添加了对 lz4 压缩的支持。作为此更改的一部分,现在提供以下指标:
hdfs/pull/sizehdfs/pull/durationhdfs/push/sizehdfs/push/duration
升级说明和不兼容变更
升级说明
基于 Hadoop 的摄入
已移除对基于 Hadoop 的摄入的支持。此功能在 Druid 34 中已被弃用。
请使用 Druid 的其他支持的摄入方法,例如基于 SQL 的摄入或使用 Kubernetes 的无 MiddleManager 摄入。
AWS SDK v2
Druid 现在使用 AWS SDK 版本 2.40.0,因为 SDK 的 v1 已停止维护。
默认开启段元数据缓存
从 Druid 37 开始,段元数据缓存默认开启。此功能允许 Broker 缓存从 Coordinator 轮询的段元数据,而不是为针对 sys.segments 表的每个查询获取元数据。这提高了性能,但增加了 Broker 上的内存使用量。
druid.sql.planner.metadataSegmentCacheEnable 配置控制此功能。
解析器更改
流式摄入 parser
已弃用的 parser 的支持已针对 Kafka 和 Kinesis 等流式摄入任务移除。操作员现在必须在监督器规范的 ioConfig 上指定 inputSource/inputFormat,并且 dataSchema 不得指定解析器。在升级到 Druid 37 或更高版本之前执行此操作。
移除 ParseSpec 和已弃用的解析器
已移除原生批处理任务和流式摄入索引服务的解析器。在可能的情况下,使用输入格式代替。请注意,JavascriptParseSpec 和 JSONLowercaseParseSpec 没有 InputFormat 等效项。
Druid 支持自定义文本数据格式,并可以使用 Regex 输入格式来解析它们。但是,请注意,这样做来解析数据不如编写原生 Java InputFormat 扩展或使用外部流处理器高效。我们欢迎贡献新的输入格式。
从 0.23 之前的 Druid 版本进行滚动升级
您无法从 Druid 0.23 之前的版本执行滚动升级。
使用压缩监督器的自动压缩的元数据存储
使用监督器的自动压缩需要 Overlord 上的增量段元数据缓存和新的元数据存储表;如果您对以下配置使用默认设置,则无需执行任何操作:
druid.manager.segments.useIncrementalCachedruid.metadata.storage.connector.createTables
如果 druid.manager.segments.useIncrementalCache 设置为 never,请将其更新为 ifSynced 或 always。有关该配置的更多信息,请参阅 段元数据缓存。
如果您将 druid.metadata.storage.connector.createTables 配置设置为 false,则需要手动更改 segments 表并创建 compactionStates 表。下面提供了 Postgres DDL 作为指南:
-- create the indexing states lookup table and associated indices
CREATE TABLE druid_indexingStates (
created_date VARCHAR(255) NOT NULL,
datasource VARCHAR(255) NOT NULL,
fingerprint VARCHAR(255) NOT NULL,
payload BYTEA NOT NULL,
used BOOLEAN NOT NULL,
pending BOOLEAN NOT NULL,
used_status_last_updated VARCHAR(255) NOT NULL,
PRIMARY KEY (fingerprint),
);
CREATE INDEX idx_druid_compactionStates_used ON druid_compactionStates(used, used_status_last_updated);
-- modify druid_segments table to have a column for storing compaction state fingerprints
ALTER TABLE druid_segments ADD COLUMN indexing_state_fingerprint VARCHAR(255);
您可能需要根据您的表命名策略前缀和元数据存储后端调整语法。
段锁定
段锁定和 NumberedOverwriteShardSpec 已弃用,并将在未来的版本中删除。请改用时间块锁定。您可以通过设置 druid.indexer.tasklock.forceTimeChunkLock 为 true(默认值)来确保仅使用时间块锁定。
不兼容的变更
移除 defaultProcessingRate 配置
此配置允许在第一个指标可用之前开始伸缩操作。
前端编码(Front-coding)格式
如果启用,Druid 现在默认使用 v1 的前端编码格式,而不是版本 0。版本 1 是在 Druid 26 中引入的。如果您启用了版本 0 的前端编码,降级到或从 26 之前的 Druid 版本升级可能需要重新索引。
开发者说明
- 向
npm run test-unit添加了typecheck,以确保 TypeScript 类型检查在调用test-unit时发生 #19251 - 为
dependabot更新添加了 14 天的冷却期,以防止尚未发现的回归和安全问题 #19241 - 添加了
AGENTS.md#19084 - 添加了使用 常规提交语法 的要求 #19089
- 将
checkstyle从3.0.0更新为3.6.0#19064
依赖更新
以下依赖项已更新:
- 添加了
software.amazon.awssdk以支持WebIdentityTokenProvider#19178 org.apache.iceberg从1.6.1到1.7.2#19172diff节点模块从 4.0.1 到 4.0.4 #18933org.apache.avro从 1.11.4 到 1.11.5 #19103bytebuddy从1.17.7到1.18.3#19000slf4j从2.0.16到2.0.17#18990- Apache Commons Codec 从
1.16.1到1.17.1#18990 jacoco从0.8.12到0.8.14#18990docker-java-bom从3.6.0到3.7.0#18990assertj-core从3.24.2到3.27.7#18994maven-surefire-plugin从3.2.5到3.5.4#18847guice从5.1.0到6.0.0#18986- JDK 编译器从 11 到 17 #18977
vertx从4.5.14到4.5.24#18947fabric8从7.4.0到7.5.2#18947mockito从5.14.2到5.23#19145easymock从5.2.0到5.6.0#19145equalsverifier从3.15.8到4.4.1#19145bytebuddy从1.18.3到1.18.5#19145- 添加了
objenesis3.5#19145 org.apache.zookeeper从 3.8.4 到 3.8.6 #19135com.lmax.disruptor从3.3.6到3.4.4#19122org.junit.junit-bom从5.13.3到5.14.3#19122io.fabric8:kubernetes-client7.5.2 → 7.6.0 #19071io.kubernetes:client-java19.0.0 → 25.0.0-legacy #19071com.squareup.okhttp3:okhttp4.12.0 → 5.3.2 #19071org.jetbrains.kotlin:kotlin-stdlib1.9.25 → 2.2.21 #19071commons-codec:commons-codec1.17.1 → 1.20.0 #19071org.apache.commons:commons-lang33.19.0 → 3.20.0 #19071com.google.code.gson:gson2.12.0 → 2.13.2 #19071com.amazonaws:aws-java-sdk1.12.784 → 1.12.793 #19071caffeine从2.8.0到2.9.3#19208commons-io从2.17.0到2.21.0#19208commons-collections4从4.2到4.5.0#19208commons-compress从1.27.0到1.28.0#19208zstd-jni从1.5.2-3到1.5.7-7#19208scala-library从2.12.7到2.13.16#19208iceberg从1.7.2到1.10.0#19232parquet从1.15.2到1.16.0#19232avro从1.11.5到1.12.0#19232jackson从2.19.2到2.20.2#19248netty4从4.2.6.Final到4.2.12.Final#19248errorprone从2.35.1到2.41.0#19248bcprov-jdk18on/bcpkix-jdk18on从1.81到1.82#19248RoaringBitmap从0.9.49到1.6.13#19248jedis从5.1.2到7.0.0#19248snakeyaml从2.4到2.5#19248aircompressor从0.21到2.0.2#19248reflections从0.9.12到0.10.2#19248httpclient5从5.5到5.5.1#19248jakarta.activation从1.2.2到2.0.1#19248netty-tcnative-boringssl-static从2.0.73.Final到2.0.75.Final#19248maven-compiler-plugin从3.11.0到3.14.1#19248