私は大きいRDD[(K, V)]
を持っています。値をマップするには、各キーに共通の大きなデータ構造が必要であり、構築するのに費用がかかります。私はgroupByKey
を実行することはできませんし、後でflatMap
を実行することはできません。各キーの値がメモリに収まらないからです。メモリに収まらないので、すべての構造体をロードできません。グループ(または最小回数)ごとに一度構造体の初期化を実行し、それを削除するにはどうすればよいですか?PairRDD、1回キーごとに変数を初期化する
ユースケース
- 我々はRDD [文字列、文字列]を持っています。キーは、その言語の短いテキストである値の言語を示します。
- 値のいくつかのトークンを分類する必要があります。そのためには、いくつかのトークンのカテゴリを含む各言語用のトライを作成する必要があります。
- トライを構築するのは高価なので、foreach(K、V)のペアは作成できません。単一のトライがメモリに収まるが、すべての言語の試行を保つことはできない(異なるキーの数を考えると)。
- したがって、トライを最小限の回数作成し、メモリ内にいくつかの数だけ保持する必要があります。 、
私はブロードキャスト変数を見ていきます。 foreachPartitionを使用して、同じパーティションの同じキーの値をグループ化するにはどうすればよいですか?コードが機能するには、データのすべての値が同じキーに関係している必要があります。 – Miguel
あなたの追加情報があれば、私の答えは役に立たない – ImDarrenG