pyarrow hdfs читает больше данных, чем запрошено - PullRequest
0 голосов
/ 16 мая 2019

Я использую интерфейс 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'])

1 Ответ

0 голосов
/ 29 мая 2019

Обсуждается в билете JIRA: https://issues.apache.org/jira/browse/ARROW-5432

В pyarrow api добавлена ​​функция read_at, которая позволит вам читать файл со смещением определенной длины без чтения вперед.

...