SQLAlchemy DB-API (非同期) で PyHive を使用しています。次のコマンドを実行すると、私の 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 サーバーを変更する必要がありますか?