pyarrow hdfs 读取的数据比请求的多
pyarrow hdfs reads more data than requested
我正在使用 pyarrow 的 HdfsFilesystem 接口。当我调用 n 个字节的读取时,我通常会通过网络发送 0%-300% 的数据。我怀疑 pyarrow 正在阅读。
pyarrow parquet reader 没有这种行为,我正在寻找一种方法来关闭一般 HDFS 接口的预读。
我 运行 ubuntu 14.04。此问题存在于 pyarrow 0.10 - 0.13(最新发布的版本)中。我在 python 2.7
我一直在使用wireshark 来跟踪网络上传递的数据包。
我怀疑它是提前读取的,因为第一次读取的时间比第二次读取的时间长得多。
普通的pyarrow reader
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 代码
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'])
在 JIRA 票中讨论:https://issues.apache.org/jira/browse/ARROW-5432
一个 read_at 函数被添加到 pyarrow api 中,这将允许您以一定长度的偏移量读取文件,而无需提前读取。
我正在使用 pyarrow 的 HdfsFilesystem 接口。当我调用 n 个字节的读取时,我通常会通过网络发送 0%-300% 的数据。我怀疑 pyarrow 正在阅读。
pyarrow parquet reader 没有这种行为,我正在寻找一种方法来关闭一般 HDFS 接口的预读。
我 运行 ubuntu 14.04。此问题存在于 pyarrow 0.10 - 0.13(最新发布的版本)中。我在 python 2.7
我一直在使用wireshark 来跟踪网络上传递的数据包。
我怀疑它是提前读取的,因为第一次读取的时间比第二次读取的时间长得多。
普通的pyarrow reader
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 代码
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'])
在 JIRA 票中讨论:https://issues.apache.org/jira/browse/ARROW-5432
一个 read_at 函数被添加到 pyarrow api 中,这将允许您以一定长度的偏移量读取文件,而无需提前读取。