so I changed the code tordd1InvIndex.join(rdd2Pair).map(str =>
str._2).groupByKey().map(str =>
(str._1,str._2.toList)).collect().foreach(println)
Now it prints. Don't worry I will work on this to not output as List(...) But I
am hoping that the JOIN question that @Dilip asked is hopefully answered :-)
(2,List(1001,1000,1002,1003, 1004,1001,1006,1007))(3,List(1011,1012,1013,1010,
1007,1009,1005,1008))(1,List(1001,1000,1002,1003, 1011,1012,1013,1010,
1004,1001,1006,1007, 1007,1009,1005,1008))
From: Shixiong Zhu <[email protected]>
To: Sanjay Subramanian <[email protected]>
Cc: dcmovva <[email protected]>; "[email protected]"
<[email protected]>
Sent: Saturday, January 3, 2015 8:15 PM
Subject: Re: Joining by values
call `map(_.toList)` to convert `CompactBuffer` to `List`
Best Regards,Shixiong Zhu
2015-01-04 12:08 GMT+08:00 Sanjay Subramanian
<[email protected]>:
hi Take a look at the code here I
wrotehttps://raw.githubusercontent.com/sanjaysubramanian/msfx_scala/master/src/main/scala/org/medicalsidefx/common/utils/PairRddJoin.scala
/* rdd1.txt
1~4,5,6,7
2~4,5
3~6,7
rdd2.txt
4~1001,1000,1002,1003
5~1004,1001,1006,1007
6~1007,1009,1005,1008
7~1011,1012,1013,1010
*/
val sconf = new
SparkConf().setMaster("local").setAppName("MedicalSideFx-PairRddJoin")
val sc = new SparkContext(sconf)
val rdd1 = "/path/to/rdd1.txt"
val rdd2 = "/path/to/rdd2.txt"
val rdd1InvIndex = sc.textFile(rdd1).map(x => (x.split('~')(0),
x.split('~')(1))).flatMapValues(str => str.split(',')).map(str => (str._2,
str._1))
val rdd2Pair = sc.textFile(rdd2).map(str => (str.split('~')(0),
str.split('~')(1)))
rdd1InvIndex.join(rdd2Pair).map(str =>
str._2).groupByKey().collect().foreach(println)
This outputs the following . I think this may be essentially what u r looking
for(I have to understand how to NOT print as
CompactBuffer)(2,CompactBuffer(1001,1000,1002,1003, 1004,1001,1006,1007))
(3,CompactBuffer(1011,1012,1013,1010, 1007,1009,1005,1008))
(1,CompactBuffer(1001,1000,1002,1003, 1011,1012,1013,1010, 1004,1001,1006,1007,
1007,1009,1005,1008))
From: Sanjay Subramanian <[email protected]>
To: dcmovva <[email protected]>; "[email protected]"
<[email protected]>
Sent: Saturday, January 3, 2015 12:19 PM
Subject: Re: Joining by values
This is my design. Now let me try and code it in Spark.
rdd1.txt =========1~4,5,6,72~4,53~6,7
rdd2.txt
========4~1001,1000,1002,10035~1004,1001,1006,10076~1007,1009,1005,10087~1011,1012,1013,1010
TRANSFORM 1===========map each value to key (like an inverted
index)4~15~16~17~15~24~26~37~3
TRANSFORM 2===========Join keys in transform 1 and
rdd24~1,1001,1000,1002,10034~2,1001,1000,1002,10035~1,1004,1001,1006,10075~2,1004,1001,1006,10076~1,1007,1009,1005,10086~3,1007,1009,1005,10087~1,1011,1012,1013,10107~3,1011,1012,1013,1010
TRANSFORM 3===========Split key in transform 2 with "~" and keep key(1) i.e.
1,2,31~1001,1000,1002,10032~1001,1000,1002,10031~1004,1001,1006,10072~1004,1001,1006,10071~1007,1009,1005,10083~1007,1009,1005,10081~1011,1012,1013,10103~1011,1012,1013,1010
TRANSFORM 4===========join by key
1~1001,1000,1002,1003,1004,1001,1006,1007,1007,1009,1005,1008,1011,1012,1013,10102~1001,1000,1002,1003,1004,1001,1006,10073~1007,1009,1005,1008,1011,1012,1013,1010
From: dcmovva <[email protected]>
To: [email protected]
Sent: Saturday, January 3, 2015 10:10 AM
Subject: Joining by values
I have a two pair RDDs in spark like this
rdd1 = (1 -> [4,5,6,7])
(2 -> [4,5])
(3 -> [6,7])
rdd2 = (4 -> [1001,1000,1002,1003])
(5 -> [1004,1001,1006,1007])
(6 -> [1007,1009,1005,1008])
(7 -> [1011,1012,1013,1010])
I would like to combine them to look like this.
joinedRdd = (1 ->
[1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013])
(2 -> [1000,1001,1002,1003,1004,1006,1007])
(3 -> [1005,1007,1008,1009,1010,1011,1012,1013])
Can someone suggest me how to do this.
Thanks Dilip
--
View this message in context:
http://apache-spark-user-list.1001560.n3.nabble.com/Joining-by-values-tp20954.html
Sent from the Apache Spark User List mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]