pyarrow hdfs读取的数据多于请求的数据

时间:2019-05-16 20:31:52

标签: python hdfs pyarrow

我正在使用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'])

1 个答案:

答案 0 :(得分:0)

在JIRA机票中讨论过:https://issues.apache.org/jira/browse/ARROW-5432

py_at函数已添加到pyarrow api中,使您可以以一定长度的偏移量读取文件,而无需提前读取。