问题描述
由于函数read_Metadata与旧版本不兼容,为什么the commit 7138f470f0e55f2ebdb7638ddc4dfe2e78671403不会触发dask的新主版本?提交引入了4个值的返回,但是旧版本仅返回3个值。根据语义versioning,这将是正确的行为。
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对版本字符串的值没有具体的政策,但有人可能会争辩说,在这种特殊情况下,IO代码是非核心的,并且很大程度上是由上游(pyarrow)开发而不是我们自己开发的主动性。
对于您的代码已损坏,我们深感抱歉,但是当然选择正确版本的软件包并期望下游软件包能够赶上是开源生态系统的一部分。
如果您想从更多的敏捷维护团队那里得到建议,您可能想把它作为github问题提出。 (从stackoverflow的角度来看,这里实际上没有多少“答案”)