如何拆分RDD的条目[(String,List [(String,String,String,String)])]

时间:2016-08-22 07:43:52

标签: scala apache-spark rdd

我需要使用以下格式对rdd应用一些处理:

RDD[(String,List[(String,String,String,String)])]

以下是来自RDD的示例条目:

(600,List((5,111,1,1), (15,111,1,5), (38,111,2,null))
(700,List((5,111,1,1), (35,111,1,5), (39,111,2,null))

我需要根据时间戳值将每个条目拆分成几个条目,这些值位于List中每个元组的第一个元素中。每个条目应包含20分钟内的时间戳。

例如,第一个条目应分为两个条目:

List((5,111,1,1), (15,111,1,5))
List((38,111,2,null))

最终结果应为RDD[(String,List[(String,String,String,String)])]

(600,List((5,111,1,1), (15,111,1,5)))
(600,List((38,111,2,null)))
(700,List((5,111,1,1))
(700,List((35,111,1,5), (39,111,2,null))

任何提示如何执行此操作以及应用哪些功能?

1 个答案:

答案 0 :(得分:2)

您可以创建一个splitList函数,根据您所需的行为从给定记录中拆分列表(不确定我是否准确地遵循了它,描述有点含糊不清),然后使用 {{1} 将每个键值记录“拆分”为多个记录:

flatMap