2016-01-22 75 views
0

我正在加入兩個RDD。火花加入:括號問題

樣品file1的數據:

245216 123422,187,235,742,1635,5600,2782,52,140943 

樣品file2的數據:

281216 12433,308,454,27862,2693,4578,138812,567,20,716 

現在,這裏是代碼:

rdd1 = sc.textFile("file1").map(_.split("\t")).map(line => (line(0), line(1))) 
rdd2 = sc.textFile("file2").map(_.split("\t")).map(line => (line(0), line(1))) 
val merged = rdd1.join(rdd2)  

的O/P爲k,(v)和我想在進一步處理時消除該值附近的括號。我嘗試了一些事情,包括

我還保存結果:

merged_no_paren.map{case x=>s"${x._1}\t${x._2}"}.saveAsTextFile("merged") 

不幸的是,結果總是按以下格式:

100 (1,50,200) 
120 (2,25,789) 
.... 

我想他們是:

100 1,50,200 
120 2,25,789 
+0

給我們輸入rdd1和rdd2 –

+0

剛剛更新了這個信息的問題。 – user3803714

+0

你在加入什麼? –

回答

0

加入後您的RDD類型爲RDD[(String, (String, String))]。如果您只是打印一個(String, String),它會打印括號。但是你可以把它拆開並以任何你喜歡的方式打印。

scala> val s = Seq(("1", ("2", "3"))) 
s: Seq[(String, (String, String))] = List((1,(2,3))) 

scala> for (e <- s) println(e) 
(1,(2,3)) 

scala> for ((k, v) <- s) println(s"$k $v") 
1 (2,3) 

scala> for ((k, (v1, v2)) <- s) println(s"$k $v1,$v2") 
1 2,3