Потоковый паркетный файл python и только даунсэмплинг

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

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

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

2 ответа

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

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

Это не ответ, я публикую здесь, потому что это единственная соответствующая запись, которую я могу найти в Stackru. Я пытаюсь использовать 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

Другие вопросы по тегам