0

为什么由于函数 read_metadata 与旧版本不兼容,提交 7138f470f0e55f2ebdb7638ddc4dfe2e78671403没有触发新的主要版本 dask?提交引入了 4 个值的返回,但旧版本只返回 3 个。根据语义版本控制,这将是正确的行为。

由于那次提交,cudf坏了。

问题中的代码:

>>> import cudf
>>> import dask_cudf
>>> dask_cudf.from_cudf(cudf.DataFrame({'a':[1,2,3]}),npartitions=1).to_parquet('test_parquet')

>>> dask_cudf.read_parquet('test_parquet')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/nvme/0/vjawa/conda/envs/cudf_15_june_25/lib/python3.7/site-packages/dask_cudf/io/parquet.py", line 213, in read_parquet
    **kwargs,
  File "/nvme/0/vjawa/conda/envs/cudf_15_june_25/lib/python3.7/site-packages/dask/dataframe/io/parquet/core.py", line 234, in read_parquet
    **kwargs
  File "/nvme/0/vjawa/conda/envs/cudf_15_june_25/lib/python3.7/site-packages/dask_cudf/io/parquet.py", line 17, in read_metadata
    meta, stats, parts, index = ArrowEngine.read_metadata(*args, **kwargs)
ValueError: not enough values to unpack (expected 4, got 3)

dask_cudf==0.14 仅与 dask<=0.19 兼容。在 dask_cudf==0.16 中,该问题已修复。

编辑:链接到问题

4

1 回答 1

1

虽然 Dask 没有关于版本字符串值的具体政策,但有人可能会争辩说,在这种特殊情况下,IO 代码是非核心的,并且主要是由上游(pyarrow)开发而不是我们自己的主动推动的。

我们很抱歉您的代码损坏了,但是当然选择正确版本的包并期望下游包赶上来是开源生态系统的一部分。

如果您想获得更多 dask 维护团队的意见,您可能想将此作为 github 问题提出。(从stackoverflow的角度来看,这里没有太多要“回答”的东西)

于 2020-08-17T17:11:23.217 回答