首页 > 解决方案 > Dask dataframe.read_csv 无法与 hdfs csv 文件一起正常工作

问题描述

我想从 hdfs 服务器读取 csv 数据,但它会引发异常,如下所示:

    hdfsSeek(desiredPos=64000000): FSDataInputStream#seek error:
    java.io.EOFException: Cannot seek after EOF
    at 
    org.apache.hadoop.hdfs.DFSInputStream.seek(DFSInputStream.java:1602)
    at 
    org.apache.hadoop.fs.FSDataInputStream.seek(FSDataInputStream.java:65)

我的 Python 代码:

from dask import dataframe as dd
df = dd.read_csv('hdfs://SER/htmpa/a.csv').head(n=3)

.csv 文件:

    user_id,item_id,play_count
    0,0,500
    0,1,3
    0,3,1
    1,0,4
    1,3,1
    2,0,1
    2,1,1
    2,3,5
    3,0,1
    3,3,4
    4,1,1
    4,2,8
    4,3,4

标签: pythonpandascsvhdfsdask

解决方案


您是在 IDE 还是 jupyter notebook 中运行?
我们在 Cloudera 发行版上运行,也遇到了类似的错误。据我们了解,它与我们的配置无关,dask而是与我们的hadoop配置相关。
无论如何,我们 在访问hdfs. 请注意,如果您需要访问parquet使用版本运行的文件0.12并且没有0.13 在 github 上看到讨论
更新
pyarrow 版本0.14,应该可以解决问题。


推荐阅读