我在执行连接后获得了以下数据,我需要从键值对的值部分中提取几个字段。请帮助我如何引用值部分,然后引用其中的字段。
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
答案 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)) }