首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Apache DataFusion CLI 安装实战:Cargo、Homebrew 与 Docker 三种方式详解
📅 2026/9/25 5:38:56
✍️ 爱科研究院
👁 阅读 3,247
大数据数据分析后端【免费下载链接】datafusionApache DataFusion SQL Query Engine项目地址https://gitcode.com/gh_mirrors/datafu/datafusion点击查看免费下载datafusion-cli是 Apache DataFusion 自带的交互式命令行客户端可用于对 CSV、Parquet、JSON、Arrow、Avro 等数据文件直接执行 SQL 查询。本文基于仓库中的官方安装文档 docs/source/user-guide/cli/installation.md系统讲解其三种安装与运行方式使用 Cargo 从源码构建安装、在 macOS 上通过 Homebrew 安装、以及用 Docker 从仓库源码构建镜像运行。读完本文你将掌握每种方式的前置条件、完整命令、常见注意事项并能快速验证安装结果、进入 REPL 执行第一条 SQL。datafusion-cli 是什么按照官方 概述文档 的描述DataFusion CLIdatafusion-cli是一个交互式命令行工具用于对任何受支持的数据文件执行 SQL 查询。它虽然是 DataFusion 引擎的示例式客户端但功能完整支持全套 SQL可从本地文件、目录以及 S3 等远程位置读取和写入 CSV、Parquet、JSON、Arrow 与 Avro 数据。从 datafusion-cli/Cargo.toml 可以看到这个包的本质是一个独立的 Rust 二进制 crate它把datafusion核心引擎与avro、parquet、parquet_encryption、sql、regex_expressions、unicode_expressions等特性聚合在一起并额外集成了object_storeAWS/GCP/HTTP 对象存储支持、rustylineREPL 行编辑与mimalloc内存分配器见 datafusion-cli/src/main.rs 中的#[global_allocator]从而开箱即用地提供完整的交互式 SQL 体验。官方共提供三种安装路径下文逐一展开。安装前置条件Rust 工具链无论选择哪种方式只要走从源码构建路线Cargo 或 Docker都需要可用的 Rust 工具链。当前仓库在根目录 rust-toolchain.toml 中固定了工作区编译所用的工具链版本[toolchain] channel 1.98.1 components [rustfmt, clippy]也就是说本项目按 Rust 1.98.1 进行编译与 CI 校验。使用 rustup 安装工具链后cargo命令即可直接可用若本地工具链与项目要求不一致rustup 会依据rust-toolchain.toml自动切换到对应版本。方式一使用 Cargo 从源码安装官方文档推荐的最直接方式是使用cargo install它会把最新发布的datafusion-cli版本从 crates.io 下载并编译然后安装到本机的 Cargo bin 目录通常是~/.cargo/bincargo install datafusion-cli # Updating crates.io index # Installing datafusion-cli v37.0.0 # Updating crates.io index # ...几点实操说明版本以 crates.io 实际发布为准。文档中的示例输出显示的是 v37.0.0而当前仓库工作区版本号已是 55.1.0见根目录 Cargo.toml 中version 55.1.0cargo install datafusion-cli默认安装的是 crates.io 上的最新 release。编译耗时较长。datafusion及其依赖arrow、parquet、tokio 等编译体量较大首次安装可能需要几分钟文档示例中安装过程中的Updating crates.io index即表示正在解析与下载依赖。安装后需要把 bin 目录加入 PATH。若~/.cargo/bin不在PATH中可通过export PATH$HOME/.cargo/bin:$PATH临时加入或写入 shell 配置文件。验证安装执行datafusion-cli --version即可看到当前版本号datafusion-cli --help可查看全部命令行参数完整参数清单见官方 使用指南。如果你已经在本地克隆了本仓库也可以直接在仓库根目录只编译 CLI 包产物位于target/release/datafusion-clicargo build -p datafusion-cli --release这条命令等价于 Dockerfile 构建阶段所做的动作见下文方式三适合需要基于本地源码调试 CLI 或贡献代码的场景。方式二macOS 上使用 Homebrew 安装如果你使用 macOSdatafusion-cli也可以通过 Homebrew 包管理器安装Homebrew 为 macOS 的包管理工具其官方安装说明见 https://docs.brew.sh/Installationbrew install datafusion # ... # Pouring datafusion--37.0.0.arm64_sonoma.bottle.tar.gz # /opt/homebrew/Cellar/datafusion/37.0.0: 9 files, 63.0MB # Running brew cleanup datafusion...从示例输出可以看出Homebrew 会直接下载预编译的 bottle示例为适用于 Apple Silicon Sonoma 的arm64_sonoma版本并安装到/opt/homebrew/Cellar/Apple Silicon 的默认 Homebrew 前缀下随后自动执行brew cleanup清理旧版本。整个过程无需本地编译速度远快于cargo install。安装完成后直接在终端执行datafusion-cli即可启动。方式三使用 Docker 运行官方目前没有发布现成的 Docker 镜像因此使用 Docker 时需要从仓库源码自行构建。官方文档给出的完整流程如下git clone https://gitcode.com/gh_mirrors/datafu/datafusion cd datafusion # Note: the build can take a while docker build -f datafusion-cli/Dockerfile . --tag datafusion-cli # You can also bind persistent storage with -v /path/to/data:/data docker run --rm -it datafusion-cli其中docker build指定使用 datafusion-cli/Dockerfile 构建构建阶段会完整编译datafusion-cli耗时较长docker run --rm -it datafusion-cli以交互式 TTY 方式进入容器内的 CLI REPL如需持久化数据目录可追加-v /path/to/data:/data将宿主机目录挂载到容器内的/data。官方文档还特别提示仓库根目录存在.dockerignore文件在某些情况下可能需要将其删除才能让构建正常工作。当前仓库的 .dockerignore 内容如下.git **target即排除了.git目录与所有target构建目录后者的作用是避免把本地编译产物带入构建上下文。如果你按文档流程构建遇到上下文或路径相关的问题可参考该提示处理。深入理解镜像结构为了让你对 Docker 方案有更完整的掌控这里结合 datafusion-cli/Dockerfile 的源码解读镜像构建的两个阶段第一阶段builder编译二进制FROM rust:bookworm AS builder COPY . /usr/src/datafusion WORKDIR /usr/src/datafusion RUN cargo build -p datafusion-cli --release基于官方rust:bookworm镜像把仓库源码复制进容器后仅编译datafusion-cli这一个包-p参数指定包名避免编译整个工作区产出 release 二进制。第二阶段runtime精简运行环境FROM debian:bookworm-slim COPY --frombuilder /usr/src/datafusion/target/release/datafusion-cli /usr/local/bin RUN mkdir /data ENTRYPOINT [datafusion-cli] CMD [--data-path, /data]最终运行镜像基于精简的debian:bookworm-slim只把编译好的datafusion-cli二进制复制到/usr/local/bin并创建/data目录作为默认数据目录。ENTRYPOINT固定启动命令为datafusion-cliCMD则传入--data-path /data使容器启动后直接以/data作为数据路径进入 REPL——这也解释了上面挂载-v /path/to/data:/data的含义宿主机数据目录将作为容器内 CLI 的工作数据目录。安装后的快速验证三种方式安装完成后可用以下命令确认 CLI 就绪datafusion-cli --version datafusion-cli --help--version打印版本号--help输出完整参数说明常用参数包括-p/--data-path数据目录默认当前目录、-b/--batch-size每批行数、-c/--command直接执行命令字符串后退出、-f/--file从文件执行 SQL 后退出、-m/--memory-limit内存池上限如10g、--format输出格式csv/tsv/table/json/nd-json/automatic等。随后直接运行datafusion-cli进入 REPL即可对本地文件执行 SQL。以官方 概述文档 中的示例为例对当前目录下的hits.parquet执行$ datafusion-cli DataFusion CLI v37.0.0 select count(distinct URL) from hits.parquet; ---------------------------------- | COUNT(DISTINCT hits.parquet.URL) | ---------------------------------- | 18342019 | ---------------------------------- 1 row(s) fetched. Elapsed 1.969 seconds.关于启动后的更多细节命令行参数、\d、\q等内置命令、SET/SHOW配置、Spark 兼容模式、datafusion-cli专属函数等请继续阅读 使用指南 与 DataFusion CLI 专属函数如何用 CLI 对接本地文件与 S3 等数据源见 数据源指南。小结Cargo 方式适合通用环境与开发者一条cargo install datafusion-cli即可代价是编译耗时较长本地有源码时可改用cargo build -p datafusion-cli --release。Homebrew 方式面向 macOS 用户brew install datafusion直接安装预编译 bottle安装快、易维护。Docker 方式适合容器化环境官方未提供预构建镜像需按 Dockerfile 从仓库源码自行构建构建产物为精简的 Debian 镜像默认数据目录/data可用-v挂载持久化数据。无论选择哪种方式安装完成后都能立即获得一个功能完整的 DataFusion SQL 交互终端用于探索本地或远程如 S3数据文件。赞分享大数据数据分析后端【免费下载链接】datafusionApache DataFusion SQL Query Engine项目地址https://gitcode.com/gh_mirrors/datafu/datafusion点击查看免费下载相关推荐ik_llama.cpp 预编译安装指南Homebrew、Nix 与 Flox 三种方式详解ik_llama.cpp 预编译安装指南Homebrew、Nix 与 Flox 三种方式详解 本篇技术指南围绕仓库 docs/install.md https人工智能大模型推理引擎本地部署模型量化Flower 安装实战指南PyPI、conda 与 Docker 三种安装方式详解及版本校验Flower 安装实战指南PyPI、conda 与 Docker 三种安装方式详解及版本校验 本文基于 Flower 官方安装文档 how to instal人工智能联邦学习机器学习深度学习ops-cv 昇腾环境部署实战CANNLab、Docker 与手动安装三种方式详解ops cv 昇腾环境部署实战CANNLab、Docker 与手动安装三种方式详解 ops cv 是 CANN 算子库中面向图像处理与目标检测的高阶算子库覆算子库人工智能计算机视觉图像处理CANN上一篇ResXResourceManager导入导出技巧Excel与XLIFF格式无缝转换下一篇【亲测免费】Open Graph Benchmark (OGB)一站式图机器学习基准测试工具全攻略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/25 5:38:56
Atlas 300V 24G部署YOLO全指南:从ONNX转OM到ACL推理
2026/9/25 5:38:56
golutra技能商店实操指南:4步为你的Agent军团构建可复用的能力生态
2026/9/25 5:38:56
cuDF 错误处理体系全解:libcudf 异常类型、CUDF_EXPECTS 断言宏与错误码机制
2026/9/25 6:23:58
微信PC版DLL报错真相:不是文件丢失而是信任链断裂
2026/9/25 6:23:58
Android HCE门禁卡模拟全解析:从协议原理到APDU实战踩坑
2026/9/25 6:23:58
Android APP接入FlexManager设备云平台:登录接口实战与避坑指南
2026/9/25 6:23:58
ATGM332D RMC报文解析与北京时间转换实战:从原始数据到可用定位
2026/9/25 6:23:58
ESP32换板为何不能直接运行?小智源码适配本质解析
2026/9/25 6:18:58
项目基线管理实战:从P6基线分配到安全基线检查的完整指南
2026/9/25 0:03:37
AI元人文:从工具使用到思维重构的深度探索
2026/9/25 0:03:37
Python+CNN车牌识别实战:从数据预处理到模型训练与部署
2026/9/25 0:03:37
Vim基础操作全攻略:保存退出、模式切换与高频命令实战
2026/9/25 5:41:44
深入解析Transformer多头注意力机制与工程优化
2026/9/25 5:41:44
OpenClaw 的 Skills 跑学习任务,模型通道改到 TaoToken 通道行不行?
2026/9/25 5:41:44
ChatGPT报错Oops, an error occurred! 全链路排查指南