Потоковый паркетный файл python и только даунсэмплинг - PullRequest
0 голосов
/ 02 января 2019

У меня есть данные в формате паркета, которые слишком велики, чтобы уместиться в память (6 ГБ). Я ищу способ прочитать и обработать файл, используя Python 3.6. Есть ли способ для потоковой передачи файла, сокращения и сохранения в dataframe? В конечном счете, я хотел бы иметь данные в формате dataframe для работы.

Я ошибаюсь, пытаясь сделать это без использования рамки искры?

Я пытался использовать pyarrow и fastparquet, но у меня возникают ошибки памяти при попытке прочитать весь файл в. Любые советы или предложения будут с благодарностью!

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Это не ответ, я публикую здесь, потому что это единственное релевантное сообщение, которое я могу найти в Stackoverflow.Я пытаюсь использовать функцию read_row_group, но python просто завершится с кодом 139. Других сообщений об ошибках нет, я не уверен, как это исправить ..

from pyarrow.parquet import ParquetFile
path = "sample.parquet"
f = ParquetFile(source = path)
print(f.num_row_groups) # it will print number of groups

# if I read the entire file:
df = f.read() # this works

# try to read row group
row_df = f.read_row_group(0)

# I get
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

Python версии 3.6.3

pyarrow версия 0.11.1

0 голосов
/ 02 января 2019

Искра, безусловно, является жизнеспособным выбором для этой задачи.

Мы планируем добавить логику потокового чтения в pyarrow в этом году (2019, см. https://issues.apache.org/jira/browse/ARROW-3771 и связанные с этим вопросы). В то же время, я бы рекомендовал читать по одной группе строк за раз, чтобы уменьшить проблемы использования памяти. Вы можете сделать это с помощью pyarrow.parquet.ParquetFile и его read_row_group метода

...