2016-11-23 7 views
3

私はSparkで機械学習アルゴリズムを実装しようとしています。基本的な考え方は、データをN個のパーティションに分割し、個々のデータセットパーティションごとに個別のN個のモデルを個別に学習することです。予測の間、我々はこれらのN個のモデルをポーリングし、それらのo/pを取得し、それらを結合する。spark machine learning - より良い設計

a)は、我々はmapPartitionsWithIndex

問題使用する各パーティションにモデルを学習する(N) b)の配分を使用してN個の部分にデータをパーティションに同じ物理マシンに複数のパーティションマップ - 起動同じ物理ノード(mapPartitionsWithIndexによって呼び出される)上に複数のモデルが構築され、ノードのメモリが不足します(実行ファイルのメモリが最大限になりました)。

これを設計するより良い方法はありますか?

+0

あなたが別のパーティション上の異なるパーティション、または異なるモデルで同じモデルを学習していますか? – mtoto

答えて

0

randomSplit()関数を使用することを検討してください。この関数は、指定された重みに従ってDataFrameをランダムに1組のDataFramesに分割します。

例(Pyspark):

与えDF DATAFRAME

df = sc.parallelize([[1, 1], [2, 2], [3, 3], [4, 4]]).toDF(["a", "b"]) 

が適用されます。

splittedDF = df.randomSplit([0.5, 0.5], 1234) 
関連する問題