Cal*_*oon 6 python psycopg2 parquet pyarrow
我有下面的代码,它查询大约 500k 行的数据库。当它击中 时,它会抛出一个 SIGKILL rows = cur.fetchall()。我尝试迭代游标而不是将其全部加载到行中,但它似乎仍然会导致 OOM 问题。
无论表的大小如何,如何从数据库中获取所有数据并将其安全地转换为 parquet 文件?
def get_parquet_for_dataset_id(self, dataset, lob, max_dt):
query = _table_query(lob, table_name, max_dt)
conn = self.conns[lob]
with conn:
with conn.cursor(cursor_factory=extras.RealDictCursor) as cur:
cur.execute(query)
rows = cur.fetchall()
table = rows_to_table(rows)
pq_bytes = io.BytesIO()
pq.write_table(table, pq_bytes)
_ = pq_bytes.seek(0)
return pq_bytes;
Run Code Online (Sandbox Code Playgroud)