Я использую интерфейс Pyarrow HdfsFilesystem. Когда я вызываю чтение из n байтов, я часто получаю на 0–300% больше данных, отправляемых по сети. Я подозреваю, что пиарроу читает впереди.
В программе чтения паркетных машин pyarrow такого поведения нет, и я ищу способ отключить чтение вперед для общего интерфейса HDFS.
Я работаю на Ubuntu 14.04. Эта проблема присутствует в pyarrow 0.10 - 0.13 (последняя выпущенная версия). Я на питоне 2.7
Я использовал wireshark для отслеживания пакетов, передаваемых по сети.
Я подозреваю, что он читается вперед, поскольку время первого чтения намного больше времени второго чтения.
Обычный читатель пиарроу
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'])