我正在使用pyarrow的HdfsFilesystem接口。当我调用n个字节的读取操作时,通常会通过网络发送多0%-300%的数据。我怀疑是pyarrow正在阅读。
pyarrow实木复合地板阅读器没有这种行为,我正在寻找一种关闭常规HDFS接口的预读方法。
我正在ubuntu 14.04上运行。 pyarrow 0.10-0.13(最新发行版本)中存在此问题。我使用的是python 2.7
我一直在使用Wireshark跟踪网络上传递的数据包。
我怀疑它是预先读取的,因为第一次读取的时间远大于第二次读取的时间。
常规的pyarrow阅读器
import pyarrow as pa
fs = pa.hdfs.connect(hostname)
file_path = 'dataset/train/piece0000'
f = fs.open(file_path)
f.seek(0)
n_bytes = 3000000
f.read(n_bytes)
没有相同问题的实木复合地板代码
parquet_file = 'dataset/train/parquet/part-22e3'
pf = fs.open(parquet_path)
pqf = pa.parquet.ParquetFile(pf)
data = pqf.read_row_group(0, columns=['col_name'])
答案 0 :(得分:0)
在JIRA机票中讨论过:https://issues.apache.org/jira/browse/ARROW-5432
py_at函数已添加到pyarrow api中,使您可以以一定长度的偏移量读取文件,而无需提前读取。