0

私は2つのFILE1内のファイル、FILE2データセット・ディレクトリで過ごしていたとします。私は値を持つRDD取得しようとしています上記のコードでは{Key、Value}のRDDペアの値にキーを追加する方法と、それをrddに変換する方法は?

val file = sc.wholeTextFiles("file:///root/data/dataset").map((x,y) => y + "," + x)

: - RDD

に単一の値として>値、キーを

仮定するファイル名がFILE1あると言う2つのレコード:

file1: 

1,30,ssr 

2,43,svr 

そして

file2: 

1,30,psr 

2,43,pvr 

希望RDD出力は次のようになります。

(1,30,ssr,file1),(2,43,svr,file1),(1,30,psr,file2),(2,43,pvr,file2) 

我々はこれを達成することはできますか?可能であれば 私を助けてください!

答えて

0
var files = sc.wholeTextFiles("file:///root/data/dataset") 

var yourNeededRdd = files 
    .flatMap({ 
    case (filePath, fileContent) => { 
     val fileName = filePath.split('/).last 
     fileContent.split("\n").map(line => line + "," + fileName) 
    } 
    }) 
+0

おかげ@SarveshクマールSingh.itが働いているが、私は取得しています:、ファイル名が – Tangle

+0

感謝@Sarveshクマール・シン...その作業を一つのことは、私はちょうどマップ機能でファイル名と行を入れ替え記録の開始時に追加されます...正しい結果を与えるのは – Tangle

+1

です(この答えを読んでいる他の人のための警告と同じです)。このソリューションでは、フォルダ内のファイルはすべてローカルRAMサイズ以上にすることはできません。それが基本的に示唆されている「全体」です。 – dk14

関連する問題