【发布时间】:2021-05-07 02:40:44
【问题描述】:
使用 Python、Parquet 和 Spark 并在升级到 pyarrow=3.0.0 后遇到 ArrowNotImplementedError: Support for codec 'snappy' not built。我以前没有此错误的版本是pyarrow=0.17。错误不会出现在pyarrow=1.0.1 中,而确实出现在pyarrow=2.0.0 中。这个想法是使用 Snappy 压缩将 pandas DataFrame 编写为 Parquet 数据集(在 Windows 上),然后使用 Spark 处理 Parquet 数据集。
import numpy as np
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
df = pd.DataFrame({
'x': [0, 0, 0, 1, 1, 1],
'a': np.random.random(6),
'b': np.random.random(6)})
table = pa.Table.from_pandas(df, preserve_index=False)
pq.write_to_dataset(table, root_path=r'c:/data', partition_cols=['x'], flavor='spark')
【问题讨论】:
-
你是如何安装
pyarrow的? -
pyarrow是通过conda install pyarrow安装的 -
我无法使用 Windows python 3.8/3.9 以及 pypi 和 conda-forge 构建进行复制。正如 Uwe 在其他地方提到的,snappy 应该内置到 conda 上的 pyarrow dist 中。你能把
conda list --export和print(pa.cpp_build_info)和pa.show_versions()的输出加起来吗? -
您的
pyarrow不是来自 conda-forge。它在conda list中显示为pyarrow=3.0.0=pypi_0,我认为这意味着它来自pypi。但是,您的cpp_build_info也不匹配来自 PYPI 发行版的内容(conda-forge 和 pypi 都使用 MSVC 版本 19.16.27045.0)。卸载 pyarrow 并重新安装,确保从 conda-forge 安装...conda install -c conda-forge pyarrow -
将此添加到上游 Anaconda 问题 github.com/AnacondaRecipes/pyarrow-feedstock/issues/2
标签: parquet pyarrow apache-arrow