Как я могу получить доступ к объектам / данным In-Memory из другого скрипта Python, используя PyArrow? - PullRequest
0 голосов
/ 19 апреля 2020

Может быть, я упускаю полную концепцию Apache Стрелка здесь, поскольку я все еще пытаюсь понять это, но подумал, что я все равно спрашиваю об этом. Я использую Turbodb c, чтобы получить данные из базы данных SQL Server в таблицу стрелок. Вот код для этого:

from turbodbc import connect
import pyarrow as pa

connection = connect(
    driver="ODBC Driver 17 for SQL Server",
    server="server",
    port="port",
    database="db",
    uid="uid",
    pwd="pwd"
)

cursor = connection.cursor()

cursor.execute(
    """
    select *
    from dbo.bigtable
    """
)

data = cursor.fetchallarrow()

Это приводит меня ко всем моим данным в объект pyarrow.Table. С этими данными в памяти я хочу:

  1. сохранить их на диске (записать в паркет)
  2. использовать данные в памяти ПРЯМО (а не файлы паркета) для провести анализ / визуализацию

Однако я хочу, чтобы 1 и 2 были отдельными сценариями из приведенного выше кода. Возможно ли вообще получить доступ к данным в памяти, созданным одним сценарием для использования в другом? Если это так, могу ли я использовать PyArrow напрямую? Или я должен полагаться на какую-то другую библиотеку для выполнения sh. У меня есть некоторый дополнительный код (в попытке понять документы):

batch = data.to_batches()

sink = pa.BufferOutputStream()

writer = pa.RecordBatchStreamWriter(sink, schema)

writer.write_batch(batch[0])

writer.close()

buf = sink.getvalue()

----- I want this to be in a different script -----    
reader = pa.RecordBatchStreamReader(buf)

Как отмечено в коде, я бы хотел, чтобы чтение потока (или любого объекта в памяти) происходило в другом сценарий, чтобы я мог сделать 1 и 2.

...