2017-11-01 7 views
0

私はSparkである種のリソース割り当て問題に取り組んでいます。Sparkでのアイテム割り当てアルゴリズム

あらかじめ選択されたアイテムのリストから希望の人物とアイテムがあるとします。例えば

:事前に選択した項目の

リストが人々の希望リストI1、I2、I3

別のリストですされています

P1 want I1 

P2 wants I1 

P3 wanta I2 

P4 wants I3 

リストが行の十億のために行きます。

ここでは、各アイテムの在庫が限られているので、私が想像できる唯一の解決策は逐次的です。

私はSparkと並行したいのですが、1つのアイテムが割り当てられた後でインベントリを減らすことができる共有された、強く一貫性のある状態を持つために使用できるデータ構造/タイプは見つかりません。

私はApache Igniteを調べましたが、同じジョブ内でもすべてのエグゼキュータで使用する方法が見つかりませんでした。

私が気付いていないSparkには、いくつかの共有キャッシュがありますか?

また、Sparkのスピードと弾力性を備えたフレームワークがありますか?

+0

私にとって、それはあなたが達成しようとするものは不明です。これは、買い物カゴで同じ商品を持っている人が多いほどですか?その商品は利用可能ですか? –

+0

@RaphaelRothはい。問題は、実際に在庫で利用可能な人数より多くの人がそこにリスト内のアイテムを持っていることです。だから私は何らかの種類の割り当てが必要です。 – kaysush

答えて

2

スパークデータを共有する場合は、Apache Igniteを使用できます。 IgniteRDDは、すべてのデータをキャッシュに保存し、別の場所からアクセスするのに役立ちます。この統合のための

エントリポイント:https://ignite.apache.org/features/igniterdd.html

ドキュメント:https://apacheignite-fs.readme.io/v2.1/docs/ignitecontext-igniterdd

+0

IgniteRDDは同じスパークジョブの異なるエグゼキュータ内でデータを共有するのに役立ちますか? – kaysush

+0

IgniteRDDの下には単純なIgniteキャッシュがありますので、ここには何の問題もありません –

+0

IgniteRDDは同時に更新でき、更新プログラムはすべてのエグゼキュータで見ることができますか? – kaysush

関連する問題