- 后端
- 数据库
【免费下载链接】calcite
Apache Calcite
导读:本文以 Apache Calcite 官网 Downloads 页面(
site/downloads/index.md)为核心,系统讲解 Calcite 的两种官方获取方式——源码发行包(Source Release)与 Maven 构件(Maven Artifact),并给出完整的 PGP 签名与哈希校验流程、源码包构建方法,以及各版本(0.9.0 至 1.42.0)的演进脉络与适配器模块选型指引。读完本文,你将能够准确选择适合自己的 Calcite 版本与下载渠道,安全地完成文件完整性验证,并快速把 Calcite 以 Maven 依赖的形式接入自己的 Java 项目。
Apache Calcite 是一个动态数据管理框架:它不提供存储原语,而是提供标准的 SQL 解析与校验器、可插拔规则的优化器、逻辑与物理代数算子、SQL 与关系代数之间的转换算法,以及面向 Cassandra、Druid、Elasticsearch、MongoDB、Kafka 等多种数据源的执行适配器(见 README.md)。Calcite 通过 Apache 官方渠道发布两种形态的交付物——源码发行包与Maven 构件,本文围绕 Downloads 页面 的完整内容展开,并深入仓库源码与发布文档进行印证。
一、Calcite 的发布形态:源码包与 Maven 构件
Calcite 的每个版本都同时以两种形式交付(对应 site/downloads/index.md 的说明):
- 源码发行包(Source artifact):一个包含完整源代码的
.tar.gz(旧版本另有.zip)归档,适合需要阅读、修改或离线构建源码的用户; - Maven 构件(Maven artifact):发布到 Maven 中央仓库的二进制构件(如
calcite-core),适合以依赖方式直接集成到 Java 项目。
两者的定位不同:源码包面向"想要构建和运行整个项目"的用户,Maven 构件面向"只想在自己的工程里使用 Calcite API"的开发者。需要注意,GitHub 上的 commit hash 链接只指向版本控制历史,并不包含最终的正式源码产物(见 site/downloads/index.md),正式产物一律以 Apache 官方发布渠道为准。
二、源码发行包下载:版本表与镜像策略
2.1 版本表结构与条目含义
Downloads 页面的"Source releases"表格由 Jekyll 根据site/_posts/目录下的发布公告(categories: [release])自动生成,每一行包含四个字段:
| 字段 | 含义 | 说明 |
|---|---|---|
| Release | 版本号 | 链接到 history.html 中对应版本的发布记录(锚点如#v1-42-0),1.42.0 之后的版本才带此链接 |
| Date | 发布日期 | 取自发布公告 front matter 中的date字段 |
| Commit | 版本对应 commit | 链接到 GitHub 上该版本的提交记录,显示前 7 位短 hash |
| Download | 下载链接 | tar(较新版本)与zip(旧版本)格式的源码包,附 digest(校验和)与 pgp(签名)文件 |
以 1.42.0 为例,其发布公告位于 site/_posts/2026-05-31-release-1.42.0.md,front matter 中的version: 1.42.0、sha: c01f6b5519d4a906cf41bbe7843f5929662cf5fd、tag: v1-42-0正是版本表各列的数据来源。而 0.9.0 时代由于项目前身叫 Optiq,发布公告中带有fullVersion: apache-optiq-0.9.0-incubating特殊字段(见 2014-08-19-release-0.9.0-incubating.md),版本表会据此对 0.9.0 单独渲染optiq-0.9.0-incubating-source-release.zip。
2.2 下载渠道与镜像策略
页面模板对下载链接按发布时间做了分阶段处理(见 site/downloads/index.md 的模板逻辑):
- 最新的一个版本:优先指向 Apache 官方下载镜像调度器
https://www.apache.org/dyn/closer.lua(自动选择就近镜像,追加?action=download参数),追求下载速度; - 历史较近版本:指向
https://archive.apache.org/dist/incubator/calcite/(早期孵化期版本)或https://archive.apache.org/dist/calcite/(正式版本); - 更早版本:统一指向
https://archive.apache.org/dist/calcite/归档区。
页面明确提示(见 site/downloads/index.md):
- 当前版本的源码包托管在镜像服务器上以获得更快的下载速度;
- 旧版本源码包在 Apache 归档区(archive);
- 如果从某个镜像下载失败,重试一次,第二次下载通常会成功(不同镜像的可用性不同);
- 为安全起见,哈希和签名文件始终只托管在 Apache 官方服务器
https://downloads.apache.org,绝不由镜像提供。
2.3 下载与选择建议
- 需要最新稳定版时,点击版本表第一行(当前为 1.42.0)的tar链接,得到
apache-calcite-1.42.0-src.tar.gz; - 需要特定旧版本(如企业生产环境固定版本)时,到归档区按
apache-calcite-<version>-src.tar.gz命名规律查找,旧版本同时提供zip格式(见 site/downloads/index.md); - 只看版本历史、不下载源码的用户,可直接浏览 history.html 了解各版本特性、贡献者与兼容性说明。
三、校验下载文件的完整性(必须步骤)
3.1 为什么必须校验
页面明确要求:必须使用 PGP 签名(.asc文件)或哈希(新版本为.sha256,旧版本为.md5)校验下载文件的完整性(见 site/downloads/index.md)。这样做是为了确认文件确实由 Apache 官方发布、且在传输过程中未被篡改。模板逻辑显示校验算法随发布时间变化:2020-03-01 之后的版本用sha512,2018-06-01 之后的版本用sha256,2017-08-31 之后用md5,更早版本统一用md5(见 site/downloads/index.md)。
3.2 使用 GPG/PGP 校验签名(官方推荐)
官方给出完整的操作步骤(见 site/downloads/index.md):
- 从上面的版本表中下载发布产物(如
apache-calcite-1.42.0-src.tar.gz)及其对应的 PGP 签名文件(*.asc); - 下载 Apache Calcite 官方KEYS文件(
https://downloads.apache.org/calcite/KEYS),其中包含 Calcite 所有发布经理的公钥; - 导入 KEYS 并校验,三种方式任选其一:
方式一:GPG(推荐)
% gpg --import KEYS % gpg --verify downloaded_file.asc downloaded_file方式二:PGP 的 PGP/PGPi(Unix 系工具)
% pgpk -a KEYS % pgpv downloaded_file.asc方式三:旧版 PGP(Windows 系工具)
% pgp -ka KEYS % pgp downloaded_file.asc3.3 使用哈希校验
如果不想使用签名校验,也可以直接用官方发布的校验和文件验证:
# 新版本(sha256 / sha512) % sha256sum -c apache-calcite-1.42.0-src.tar.gz.sha256 # 旧版本(md5) % md5sum -c apache-calcite-0.9.1-incubating-src.tar.gz.md5无论选择哪种方式,校验通过(输出OK或签名有效)之后再进行解压和构建。
四、从源码包构建 Calcite
校验通过后即可解压构建。根据 howto.md 的官方说明:
$ tar xvfz apache-calcite-1.42.0-src.tar.gz $ cd apache-calcite-1.42.0-src $ gradle build构建前提:Java(JDK 8、11、17、21 或 24)与 Gradle(版本 8.14.4)需在 PATH 中;构建过程用 JDK 25 编译代码,并通过--release 8参数保证产物可运行在 Java 8 及以上环境。仓库的 gradle/wrapper/gradle-wrapper.properties 锁定了 Gradle Wrapper 版本为 8.14.4 并附带 SHA-256 校验和,确保构建环境一致性。
如果从 Git 克隆代码构建(等价于源码包的开发版),则使用内置 Wrapper:
$ git clone https://github.com/apache/calcite.git $ cd calcite $ ./gradlew buildCalcite 包含大量机器生成代码(如core/build/javacc/javaCCMain/org/apache/calcite/sql/parser/impl/SqlParserImpl.java),默认在每次构建时重新生成;若 IDE 未自动生成源码,可手动执行./gradlew generateSources(详见 howto.md)。
五、通过 Maven 获取 Calcite 构件
5.1 在 pom.xml 中声明依赖
页面给出了标准的 Maven 依赖声明模板(见 site/downloads/index.md)。以当前最新版为例(版本号由模板自动取最新发布公告的 version 字段):
<dependencies> <dependency> <groupId>org.apache.calcite</groupId> <artifactId>calcite-core</artifactId> <version>1.42.0</version> </dependency> </dependencies>其中calcite-core是 Calcite 的核心模块,包含 SQL 解析、校验、优化器与核心关系代数实现。当前仓库源码版本为 1.43.0-SNAPSHOT(见 gradle.properties 的calcite.version=1.43.0,构建时自动追加-SNAPSHOT),比已发布的 1.42.0 更新一个迭代版本,读者应以 Maven 中央仓库中实际可见的最新稳定版本号为准。
5.2 按需引入扩展模块
页面特别提醒:还要为任何需要的扩展模块添加对应的<dependency>元素,例如calcite-mongodb、calcite-spark、calcite-splunk等(见 site/downloads/index.md)。这与仓库的模块划分完全一致——settings.gradle.kts 中列出了全部子模块:
| Maven 构件(artifactId) | 对应仓库模块 | 功能定位 |
|---|---|---|
calcite-core | core | 核心引擎:解析、校验、优化、执行 |
calcite-csv | example/csv | 读取 CSV 文件的标准示例适配器(tutorial.md) |
calcite-arrow | arrow | 读取 Apache Arrow Feather 格式文件的实验性适配器(arrow_adapter.md) |
calcite-mongodb | mongodb | MongoDB 适配器 |
calcite-spark | spark | Spark 适配器 |
calcite-splunk | splunk | Splunk 适配器 |
calcite-cassandra | cassandra | Cassandra 适配器 |
calcite-druid | druid | Druid 适配器 |
calcite-elasticsearch | elasticsearch | Elasticsearch 适配器 |
calcite-kafka | kafka | Kafka 流数据适配器 |
calcite-file | file | 文件系统数据适配器 |
calcite-babel | babel | 解析器扩展框架(支持 PostgreSQL 等多方言) |
calcite-server | server | Calcite 服务端扩展 |
calcite-linq4j | linq4j | LINQ 风格的 .NET 查询语法 Java 实现 |
calcite-pig/calcite-piglet | pig/piglet | Apache Pig 集成 |
此外仓库还包含bom(统一版本管理)、plus(生产环境增强)、geode、innodb、redis、testkit、ubenchmark等模块。选择原则:只引入你实际需要的数据源适配器,避免过度依赖。
5.3 使用 Calcite 的最小 Java 示例
引入calcite-core后,即可通过 JDBC 驱动连接 Calcite。以 CSV 适配器为例,可参考 tutorial.md 的启动方式,或直接使用仓库自带的./sqlline脚本连接:
$ ./sqlline sqlline> !connect jdbc:calcite:model=example/csv/src/test/resources/model.json admin adminMaven 用户则直接在自己的应用中通过DriverManager.getConnection("jdbc:calcite:model=...")建立连接,模型文件(model JSON)定义数据源 schema,Calcite 负责其余全部 SQL 处理。
六、版本演进脉络:从 Optiq 到 1.42.0
版本表的发布公告数据可以串起 Calcite 的完整演进历史(详见 history.html 与site/_posts/下的各发布公告):
| 阶段 | 版本区间 | 里程碑 |
|---|---|---|
| 孵化期前身 | 0.9.0-incubating(2014-08-19) | 项目前身 Optiq 的第一个 Apache 孵化器发布(发布公告) |
| 更名 Calcite | 0.9.1-incubating(2014-10-02) | 更名为 Calcite 后的首个发布(发布公告) |
| 首个主要版本 | 1.0.0-incubating(2015-01-31) | 代码重新组织到org.apache.calcite命名空间(发布公告) |
| 适配器扩展期 | 1.8.0(2016-06-13) | 新增 Elasticsearch、Druid 适配器,UNNEST多参数、DESCRIBE、TRANSLATE等 SQL 特性(发布公告) |
| 大型功能期 | 1.18.0(2018-12-21) | 新增 JSON 函数、线性回归函数、WITHIN GROUP子句、lattice 推荐工具(发布公告) |
| 类型系统进化 | 1.39.0(2025-03-16) | 新增VARIANT、UUID数据类型、checked arithmetic、基于动态规划的 DPhyp 连接枚举算法、Arrow 适配器新算子(history.md) |
| 集合运算优化 | 1.40.0(2025-05-28) | INTERSECT→semi-join、MINUS→anti-join 等新规则;新增 Doris、DuckDB、SQLite、Trino 方言(history.md) |
| 类型与位运算 | 1.41.0(2025-11-01) | 支持UNSIGNED类型、DPhyp 各类连接、新的位运算符与公共子表达式 API(history.md) |
| 当前最新稳定版 | 1.42.0(2026-05-31) | 新的去关联算法(基于 Neumann & Kemper 研究论文)、CSV 自定义分隔符、SELECT ... BY、SELECT * EXCLUDE等 SQL 扩展、HYPOT/AGE/REGEXP等新函数、HepPlanner 大计划优化模式(history.md) |
各版本的兼容性声明(以 1.42.0 为例)为:在 Linux、macOS、Microsoft Windows 上测试;支持 JDK/OpenJDK 8 至 24;支持 Guava 21.0 至 33.4.8-jre(见 history.md)。这些信息可帮助你在选定版本时评估与自身运行环境的匹配度。
七、常见问题与最佳实践
7.1 镜像下载失败怎么办
页面明确说明重试即可大概率成功(见 site/downloads/index.md)。若多次失败,可直接切换到 Apache 官方归档区https://archive.apache.org/dist/calcite/手动下载。
7.2 下载后直接解压构建可以吗
不可以直接跳过校验。官方要求先完成 PGP 或哈希校验(见上文第三节)。未校验就使用外部渠道获取的包存在被篡改的风险。
7.3 用 Maven 时如何确认版本号
以 Maven 中央仓库org.apache.calcitegroup 下实际可见的版本为准。页面模板会自动取最新发布公告的version字段填入示例,因此示例中的版本号总是随仓库更新;集成时请同步核对calcite-core与各适配器构件的版本一致性,避免混用不同版本的构件导致不兼容。
7.4 推荐实践清单
- 新项目优先使用当前最新稳定版(1.42.0)及其发布公告中标注的对应 commit;
- 生产环境固定版本后,将版本号与 history.md 中的 Breaking Changes 章节对照评估升级风险;
- 所有下载操作完成后,养成先
gpg --verify再使用的习惯; - 仅引入用到的适配器构件,保持依赖最小化。
八、参考与延伸阅读
- Downloads 页面源文件:site/downloads/index.md
- 发布历史全记录:site/_docs/history.md
- 构建与测试指南:site/_docs/howto.md
- 入门教程(CSV 适配器实战):site/_docs/tutorial.md
- 模块清单与版本配置:settings.gradle.kts、gradle.properties
- 项目概览:README.md
- 后端
- 数据库
【免费下载链接】calcite
Apache Calcite
相关推荐
Apache Beam 下载与版本获取全指南:Maven、PyPI、Go Modules 与源码校验
Apache Beam 下载与版本获取全指南:Maven、PyPI、Go Modules 与源码校验 Apache Beam 官方提供 Java、Python、
批处理流处理大数据Apache MXNet 源码发布包下载与完整性校验实战指南(含 1.5.x 及全部历史版本)
Apache MXNet 源码发布包下载与完整性校验实战指南(含 1.5.x 及全部历史版本) Apache MXNet(incubating)为每个正式发布版
深度学习机器学习人工智能Apache MXNet 官方源码包下载与完整性校验完整指南(Source Download)
Apache MXNet 官方源码包下载与完整性校验完整指南(Source Download) Apache MXNet 的官方源码发行包(source rel
深度学习人工智能机器学习分布式训练
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考