2017-02-17 128 views
0
RDDData===RET 
(
    12345, 
    20170201, 
    Map(12 -> 85, 15 -> 57, 00 -> 3, 09 -> 80, 21 -> 33, 03 -> 7, 18 -> 50, 06 -> 38, 17 -> 43, 23 -> 28, 11 -> 73, 05 -> 16, 14 -> 58, 08 -> 66, 20 -> 35, 02 -> 9, 01 -> 16, 22 -> 34, 16 -> 49, 19 -> 53, 10 -> 69, 04 -> 15, 13 -> 66, 07 -> 43), 
    Map(12 -> 4, 15 -> 4, 00 -> 4, 09 -> 4, 21 -> 4, 03 -> 4, 18 -> 4, 06 -> 4, 17 -> 4, 23 -> 4, 11 -> 4, 05 -> 4, 14 -> 4, 08 -> 4, 20 -> 4, 02 -> 4, 01 -> 4, 22 -> 4, 16 -> 4, 19 -> 4, 10 -> 4, 04 -> 4, 13 -> 4, 07 -> 4), 
    Map(12 -> 15, 15 -> 9, 00 -> 4, 09 -> 14, 21 -> 8, 03 -> 4, 18 -> 8, 06 -> 8, 17 -> 9, 23 -> 8, 11 -> 15, 05 -> 4, 14 -> 9, 08 -> 12, 20 -> 8, 02 -> 4, 01 -> 5, 22 -> 8, 16 -> 9, 19 -> 9, 10 -> 14, 04 -> 5, 13 -> 13, 07 -> 9) 
) 

我是新来的火花,我不知道从哪里开始。我有一个像上面提到的rdd。你能帮我从上面的RDD中提取数值吗?从火花提取值RDD

我想提取的值,并加入第3,第4和第5列基于关键的地图。

感谢您的帮助

+2

第一impove的格式你的问题根本无法理解。 –

+1

也请添加预期的输出和尝试的代码。 – mtoto

回答

0

你可以给它这样的尝试:

rdd.map{case(id, data, map3, map4, map5) => 
      map3.toList ++ map4.toList ++ map5.toList 
     } 
    .map(l => l.groupBy(_._1).map{case(k, v) => k -> v.map(_._2).toSeq) 

首先映射功能将只保留地图转换为串联所有地图 第二张地图功能列表按键分组并将所有值按顺序排列。 所以,你将有你的只包含地图RDD,通过按键加入和值号码的序列(即密钥从地图匹配的) 输出应该是:

(12 -> [85,4,15], 15 -> [57,4,9], 00 -> [3,4,4] ..... 
+0

为什么不给OP的例子中的输出(或其中的一部分),以便他们可以看到你是否正确地解释了他们(不太清楚)的需求)? –