Может быть, я упускаю полную концепцию 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 были отдельными сценариями из приведенного выше кода. Возможно ли вообще получить доступ к данным в памяти, созданным одним сценарием для использования в другом? Если это так, могу ли я использовать 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.