R Arrow 即使安装了也找不到压缩

问题描述 投票:0回答:2

目前我正在尝试在 Docker 容器中的 R 中生成 zstd 压缩的 Apache Parquet 文件。

即使我安装了所有依赖项并且 arrow 本身工作正常,它也找不到 zstd(或 brotli)压缩。这是我的 Dockerfile 的 MWE 版本:

FROM r-base

RUN apt-get update
RUN apt-get -y install --no-install-recommends \
     libcurl4-openssl-dev \
     libssl-dev \
     libxml2-dev \
     libgit2-dev \
     libgsl0-dev \
     libfontconfig1-dev \
     libharfbuzz-dev \
     libfribidi-dev \
     libpng-dev \
     libtiff5-dev \
     git \
     curl \
     build-essential \
     libboost-system-dev \
     libboost-thread-dev \
     libboost-program-options-dev \
     libboost-test-dev \
     libboost-filesystem-dev \
     libsnappy-dev \
     libthrift-dev \
     libutf8proc-dev \
     rapidjson-dev \
     libxsimd-dev \
     liblz4-dev \
     libre2-dev \
     cmake \
     zstd \
     brotli

ARG ARROW_R_DEV=true
RUN R -e 'install.packages(Ncpus = 64, pkgs = c("arrow"))'

当我启动容器并测试可用性时,我看到:

> arrow::codec_is_available("snappy")
[1] TRUE
> arrow::codec_is_available("zstd")
[1] FALSE
> arrow::codec_is_available("brotli")
[1] FALSE

这表明

arrow
本身工作正常(我也测试过),但找不到
zstd
brotli

如何在 Docker 容器中用 R 编写

zstd
压缩的 Parquet 文件?

r compression apache-arrow
2个回答
2
投票
我想你可能需要

libzstd-dev \ libbrotli-dev
而不是

zstd \ brotli
...箭头安装可以选择它。如果您更新您的问题以包含完整的构建输出,我们也许可以提供更多帮助!例如,令我惊讶的是 arrow 包安装没有下载我们预先构建的静态库(据我所知,其中包括 zstd 和 brotli)。


0
投票
我更深入地查看了

文档,发现它不仅涉及正在安装的系统软件包,还涉及如何构建箭头本身。将 NOT_CRAN=true

 环境变量集(除其他外)
LIBARROW_MINIMAL
 添加到 
false
,从而构建具有 
zstd
 
brotli
 支持的箭头。

这个 MWE Dockerfile 对我有用

FROM r-base RUN apt-get update RUN apt-get -y install --no-install-recommends \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ libgit2-dev \ libgsl0-dev \ libfontconfig1-dev \ libharfbuzz-dev \ libfribidi-dev \ libpng-dev \ libtiff5-dev \ git \ curl \ build-essential \ libboost-system-dev \ libboost-thread-dev \ libboost-program-options-dev \ libboost-test-dev \ libboost-filesystem-dev \ libsnappy-dev \ libthrift-dev \ libutf8proc-dev \ rapidjson-dev \ libxsimd-dev \ liblz4-dev \ libre2-dev \ cmake \ zstd \ brotli ARG ARROW_R_DEV=true ARG NOT_CRAN=true RUN R -e 'install.packages(Ncpus = 64, pkgs = c("arrow"))'
    
© www.soinside.com 2019 - 2024. All rights reserved.