ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Asakusa Framework GroupSortあるある

2016-12-17 00:46:00 | PG(分散処理)

Asakusa Framework Advent Calendar 2016の17日目です。

GroupSortCoGroup演算子では、キー毎にグルーピングされたデータモデルの一覧(List)が渡されてきます。
それらのデータモデルは、デフォルトでは全て別々にインスタンス化されてList内に保持されます。したがって、入力データ量が多いとメモリーが足りなくなってOutOfMemoryErrorになることがあります。
(特によくあるのが、「多くても数件しか無い」と思っていたら、キーがnullのデータが大量にあった!というようなケースですorz)

この場合、GroupSort(やCoGroup)アノテーションにInputBuffer.ESCAPEを設定すると、データモデル1個分しかメモリーを使わなくなります。
データモデル1個分のインスタンスがList内で使いまわされるので、Listから一度に1個しか取得できない(Listから取得した他のデータモデルオブジェクトを保存しておくということが出来なくなる)という制約はありますが。

なお、昨日の『Asakusa on Sparkあるある』で書いたとおり、Asakusa on Sparkでは演算子からの出力データ数が多い場合も問題になることがあります。それへの対処方法は、そちらをご覧下さい。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Asakusa on Sparkあるある | トップ | 無名内部クラスから見える景色 »
最新の画像もっと見る

コメントを投稿

PG(分散処理)」カテゴリの最新記事