【发布时间】:2016-08-31 22:22:42
【问题描述】:
我有一个具有这种结构的 RDD
RDD[((String, String), List[(Int, Timestamp, String)])]
和数据
((D2,Saad Arif),List((4,2011-10-05 00:00:00.0,C101), (5,2010-01-27 00:00:00.0,C101)))
((D3,Faran Abid),List((7,2016-10-05 00:00:00.0,C101)))
((D1,Atif Shahzad),List((1,2012-04-15 00:00:00.0,C101), (2,2011-10-05 00:00:00.0,C101), (3,2006-12-25 00:00:00.0,C101)))
将此视为表格的意思
'(D2,Saad Arif)'
就像钥匙和
'List((4,2011-10-05 00:00:00.0,C101), (5,2010-01-27 00:00:00.0,C101)'
就像这个键的行。 现在我想检查每一行,如果在两年或更长时间之前有代码为“C101”的记录(历史),则将级别设置为 2,否则设置为 1。所以生成的 RDD 应该如下所示
((D2,Saad Arif),List((4,2011-10-05 00:00:00.0,C101, 1), (5,2010-01-27 00:00:00.0,C101, 1)))
((D3,Faran Abid),List((7,2016-10-05 00:00:00.0,C101, 1)))
((D1,Atif Shahzad),List((1,2012-04-15 00:00:00.0,C101, 2), (2,2011-10-05 00:00:00.0,C101, 2), (3,2006-12-25 00:00:00.0,C101, 1)))
注意时间戳之后的新级别。我如何使用地图或平面地图做到这一点?
【问题讨论】:
-
你了解
map和flatMap的区别吗?这显然是map的一个用例。 -
另外...请查看您过去的问题。如果有人正确回答了您的问题,请务必通过将他的答案标记为已接受来感谢该人的努力。
-
@Sarvesh Kumar Singh 是的,我对地图和平面地图有基本的了解,但我不知道如何在这种情况下使用。
-
@Sarvesh Kumar Singh 我已将答案标记为已接受。
标签: scala apache-spark