Эффективно сворачивающиеся группы строк в паркете - PullRequest
1 голос
/ 17 мая 2019

У меня есть большой файл Parquet с несколькими небольшими группами строк.Я хотел бы создать новый файл Parquet с одной (большей) группой строк, и я работаю на Python.Я мог бы сделать что-то вроде:

import pyarrow.parquet as pq
table = pq.read_table('many_tiny_row_groups.parquet')
pq.write_table(table, 'one_big_row_group.parquet')

# Lots of row groups...
print (pq.ParquetFile('many_tiny_row_groups.parquet').num_row_groups)
# Now, only 1 row group...
print (pq.ParquetFile('one_big_row_group.parquet').num_row_groups)

Однако для этого необходимо, чтобы я сразу прочитал весь файл Parquet в память.Я хотел бы избежать этого.Есть ли какой-то «потоковый» подход, при котором объем памяти может оставаться небольшим?

1 Ответ

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

Документация fastparquet отмечает возможность итерации по наборам данных, которые слишком велики, чтобы уместиться в памяти. Для чтения вы можете использовать:

pf = ParquetFile('myfile.parquet')
for df in pf.iter_row_groups():
    print(df.shape)
    # process sub-data-frame df

Для записи вы можете append в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...