繁体   English   中英

火花联接:括号问题

[英]spark join: parenthesis issue

我正在加入两个RDD。

样本文件1数据:

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

示例文件2数据:

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),我想在进行进一步处理时消除该值附近的括号。 我尝试了一些事情,包括

val merged_no_paren = merged.map { case (k, (v)) => (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

加入后,您的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM