Scala - 从键值对的值部分提取字段

时间:2016-07-22 00:31:36

标签: scala apache-spark

我在执行连接后获得了以下数据,我需要从键值对的值部分中提取几个字段。请帮助我如何引用值部分,然后引用其中的字段。

res0: Array[(String, (String, Int))] = Array((48180,(48180,2012-12-01 20:24:34.0,2014-01-18 21:11:03.0,David,Baird,4429 Hazelwood Avenue,Santa Ana,CA,92719,6579627835,2014-03-18 13:31:18.0,2014-03-18 13:31:18.0,2)),
(23136,(23136,2011-05-13 04:15:05.0,2012-12-28 02:52:19.0,Shirley,Ayers,792 Parkway Street,Pendleton,OR,97877,5412977058,2014-03-18 13:30:29.0,2014-03-18 13:30:29.0,2)))

预期输出:值部分的第一个,最后一个,第四个和第五个字段。

48180 2 David Baird
23136 2 Shirley Ayers

1 个答案:

答案 0 :(得分:1)

这种情况你可以这样解决:

rdd.map { case (k, v) => (k, v._13, v._4, v._5) }

但是,根据我看到你有更大的问题,你的价值不是13个位置的元组,是两个位置的元组。第一个是字符串,seccond是整数。如果这是真实情况,你可以这样做:

rdd.map { case (k, v) => (k, v._2, v._1.split(',')(3), v._1.split(',')(3)) }