Hadoop (古い API) に K-Means アルゴリズムを実装していますが、さらに先に進む方法がわからなくなってしまいました。
今までの私の論理は次のとおりです。
2 つのファイル重心とデータを維持します。
- ステップ 1 : 重心ファイルを読み取り、このデータをいくつかの .xml ファイルに保存します
list(ArrayList)
。 - ステップ 2 : 次に、マッパーを介してデータ ファイルを読み取ります。これは、行ごとにスキャンし、この値をリストに既に保存されている重心と比較します。
- ステップ 3 : 対応するセントロイドとデータをレデューサーに出力します。
- ステップ 4 : Reducer は新しい重心を処理し、データと共に出力します。
私の質問
- 私の流れは正しいですか?
- 重心ファイルを最初にコレクションに保存してから先に進むのは正しい方法ですか?
- アプローチ(2)を使用する場合、マップ関数はファイルを1行ずつスキャンするため、このセントロイドファイルをコレクションに保存する方法が問題になるため、データファイルでマッパーを実行する前にこのセントロイドファイルを最初にスキャンする方法は?
- この重心ファイルの機能を処理するためのより良い方法は何ですか?