如何在R语言的{arrow}包中重新启用parquet功能?
如何重新启用R语言{arrow}包的Parquet功能?
问题背景
长期使用R的{arrow}库读写Parquet文件,今日功能失效:
- 加载包时提示部分功能未启用
- 执行
arrow_info()显示parquet字段为FALSE - 调用
write_parquet()触发错误
已尝试操作:重启R、卸载重装{arrow}并重启系统、Homebrew安装Arrow、更新R后重装{arrow}并重启。
环境信息:MacOS 13.3.1、R 4.3.0、Arrow R包11.0.0.3、Arrow C++库11.0.0。
解决方案
1. 彻底清理现有Arrow组件
- 卸载R中的{arrow}包:
remove.packages("arrow") - 通过Homebrew卸载Arrow C++库(彻底清除所有版本):
brew uninstall apache-arrow --force - 手动删除R包残留文件:前往R包安装目录(如
~/Library/R/4.3/library/或/Library/Frameworks/R.framework/Versions/4.3/Resources/library/),删除arrow文件夹。
2. 安装编译依赖与完整Arrow库
- 安装编译所需工具:
brew install cmake pkg-config - 重新安装带Parquet支持的Arrow C++库:
brew install apache-arrow注:新版本Homebrew默认包含Parquet支持,若旧版本需添加
--with-parquet参数。
3. 从源码编译安装{arrow}包并强制启用Parquet
- 在R中设置环境变量,指定Arrow库路径并开启Parquet支持:
# 替换为Homebrew中Arrow的实际安装路径,可通过`brew list apache-arrow`查看 Sys.setenv(ARROW_HOME = "/opt/homebrew/Cellar/apache-arrow/11.0.0") Sys.setenv(ARROW_PARQUET = "ON") - 从源码安装{arrow}包:
安装过程中需确认无Parquet相关编译错误。install.packages("arrow", type = "source")
4. 验证功能恢复
- 加载包并检查Parquet状态:
确认输出中library(arrow) arrow_info()parquet字段为TRUE。 - 测试读写功能:
test_data <- data.frame(id = 1:3, value = c("foo", "bar", "baz")) write_parquet(test_data, "test_parquet.parquet") read_parquet("test_parquet.parquet")
额外排查点
- 若仍有问题,检查是否存在禁用Parquet的环境变量:
Sys.getenv(c("ARROW_DISABLE_PARQUET", "ARROW_HOME")),确保无禁用设置。 - 确认Arrow R包版本与C++库版本完全匹配(当前均为11.0.0,符合要求),若版本不一致,可指定版本安装:
install.packages("arrow", version = "11.0.0.3", type = "source")
内容的提问来源于stack exchange,提问作者Mikkel Roald-Arbøl
相关产品推荐
相关产品推荐

