1

RHadoop rhdfs パッケージを使用して、多数の列を持つ CSV 入力ファイルで次元削減を実行しています。出力は、すべての列の選択されたサブセットになります。簡単にするために、CSV ファイルの最初の 5 列だけを取得しようとしています。

mapreduce 関数を適用して、MR フレームワークを使用し、インメモリ処理の代わりに HDFS ストレージを使用して次元削減を実行しようとしています。

私のコードは次のとおりです。

transfer.csvfile.hdfs.to.hdfs.reduced =
                function(hdfsFilePath, hdfsWritePath, reducedCols=1) {
                        local.matrix = as.numeric()
                        hdfs.get(hdfsFilePath, local.Matrix, srcFS=hdfs.defaults("fs"))
                        transfer.reduced.map =
                                        function(.,M) {
                                                label <- M[,1]
                                                reduced.predictors <- M[,1:reducedCols]
                                                reduced.M <- cbind(reduced.predictors, label)
                                                keyval(
                                                     1,
                                                     as.numeric(reduced.M[,-1]))
                                        }
                         reduced.values =
                             values(
                                     from.dfs(
                                        mapreduce(
                                          local.matrix,
                                          map = function(.,M) {
                                                label <- M[,1]
                                                reduced.predictors <- M[,1:reducedCols]
                                                reduced.M <- cbind(reduced.predictors, label)
                                                keyval(
                                                     1,
                                                     as.numeric(reduced.M[,-1]))}
                        )))
                        to.dfs(reduced.values)
                }

予測列とラベル列を最後のものとして持つ訓練データセットを取ります。私が試みているのは、予測子の数を 100 から 5 にcbind減らし、クラス ラベル列を削減された予測子に減らし、最終的に削減されたトレーニング データ セットを hdfs に格納することです。

現在、hdfs ファイルを名前local.matrixでローカル マトリックスに保存しているため、ファイル全体をメモリ内に保存する必要があります。local.matrixを使用してインメモリをバイパスできる方法はありますか

to.dfs(local.matrix)次に、local.matrix の HDFS ストレージの場所hdfsWritePathtransfer.csvfile.hdfs.to.hdfs.reduced function?

4

0 に答える 0