我正在使用 PyHive 和 SQLAlchemy DB-API(异步)。如果我执行,我的 Hive 表有数百万条记录:
SELECT * FROM table
它在内存中加载数百万条记录。有没有办法将查询结果的大小限制为一定的大小,比如 5 MB?
我丢弃了超过 5 MB 的所有结果。数百万条记录可能是 100 MB,但我确实想在我的 Python 代码中加载这么多数据。
例如,如果:
SELECT * FROM table
1000 行 = 5 MB 的表,SQLAlchemy 只会返回 1000 行。
对于另一个查询,例如:
SELECT * FROM table2
在这里,对于 table2,100,000 行 = 5 MB,SQLAlchemy 将返回 100,000 行。
这样我就不会在我的客户端上耗尽内存。示例很简单,但可能存在复杂的连接 SQL,我想根据 MB 数据限制查询结果大小。
有没有办法用 SQLAlchemy 实现它或者需要修改 Hive & Presto 服务器来实现这种行为?