python - 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
解决方案
您是在 IDE 还是 jupyter notebook 中运行?
我们在 Cloudera 发行版上运行,也遇到了类似的错误。据我们了解,它与我们的配置无关,dask
而是与我们的hadoop
配置相关。
无论如何,我们 在访问hdfs
. 请注意,如果您需要访问parquet
使用版本运行的文件0.12
并且没有0.13
在 github 上看到讨论
更新
pyarrow 版本0.14
,应该可以解决问题。
推荐阅读
- c - 如何在标头中使用预处理器宏来命名数组的特定部分
- javascript - 如何合并此回调函数以大写此对象值中的所有首字母?
- php - PHP SQL | 在表中查找行,如果不存在,使用其他表
- reactjs - 如果直接从 index.js 调用,Nexjs getStaticProps / getInitialProps 通过工作返回未定义的组件
- android - Android 模拟器中的布局看起来与布局编辑器上显示的不同
- flutter - Flutter 2.0.0 Link Widget 使用方法?
- python - 如何创建n个变量的函数(python)
- mongodb - 获取所有文档,其中 diff beetwen 当前时间戳和一些具有纳秒值的列的值更多一些间隔
- android - 如何更改材质 TabItem 中的图标大小?
- ios - swift - iOS 如何防止 ios 自定义导航栏在键盘出现时向上移动