2016-01-22 63 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