Конвертировать кадр данных Pandas из/в файл ORC

Можно ли преобразовать кадр данных Pandas из/в файл ORC? Я могу преобразовать df в файл паркета, но библиотека, похоже, не поддерживает ORC. Есть ли доступное решение в Python? Если нет, то какая может быть лучшая стратегия? Одним из вариантов может быть преобразование файла паркета в ORC с помощью внешнего инструмента, но я понятия не имею, где его найти.


person alcor    schedule 06.11.2019    source источник
comment
Вы используете Hive или Spark (или оба)? Гораздо проще делать то, что вы пытаетесь сделать, если у вас есть один из них без ошибок. В частности, я настоятельно рекомендую вам использовать Hive для управления файлами ORC. Вы можете подключиться к нему в python, используя пакеты pyodbc или pyhive.   -  person Habardeen    schedule 04.12.2019
comment
@alcor Я только что закончил адаптер ORC на C++ и Python, так что теперь можно писать файлы ORC, если вы используете мою вилку: github.com/mathyingzhou/arrow.   -  person Ying Zhou    schedule 10.01.2021


Ответы (2)


Этот ответ проверен с помощью pyarrow==4.0.1 и pandas==1.2.5.

Сначала он создает таблицу pyarrow, используя pyarrow.Table.from_pandas. Затем он записывает файл orc, используя pyarrow.orc.ORCFile.

Read orc

import pandas as pd
import pyarrow.orc  # This prevents: AttributeError: module 'pyarrow' has no attribute 'orc'

df = pd.read_orc('/tmp/your_df.orc')

Write orc

import pandas as pd
import pyarrow as pa
import pyarrow.orc as orc

# Here prepare your pandas df.

table = pa.Table.from_pandas(df, preserve_index=False)
orc.write_table(table, '/tmp/your_df.orc')

На pandas==1.3.0 еще нет автора pd.to_orc.

person Acumenus    schedule 16.07.2021

Недавно я использовал pyarrow с поддержкой ORC, хотя я видел несколько проблем, когда модуль pyarrow.orc не загружался.

pip install pyarrow

использовать:

import pandas as pd
import pyarrow.orc as orc

with open(filename) as file:
    data = orc.ORCFile(file)
    df = data.read().to_pandas()
person PHY6    schedule 15.11.2019