我想基于分析子字符串中的值来过滤掉RDD[(String,List[(String,String,String,String)]
中的一些条目:
这是我的样本数据:
(600,List((600,111,1,1), (615,111,1,5)))
(600,List((638,111,2,null), (649,222,3,1)))
(600,List((638,111,2,3), (649,null,3,1)))
特别是我想检查每个子字符串中的第4个字段(如果从1开始计数)。如果它等于null
,则应删除整个条目。结果应如下:
(600,List((600,111,1,1), (615,111,1,5)))
(600,List((638,111,2,3), (649,null,3,1)))
因此,在此特定示例中,应删除第二个条目。
这是我尝试解决这个问题:
val filtered = separated.map(l => (l._1,l._2.filter(!_._4.equals("null"))))
问题是它只是删除子字符串,而不是整个条目。结果如下(而不是上述的):
(600,List((600,111,1,1), (615,111,1,5)))
(600,List((649,222,3,1)))
(600,List((638,111,2,3), (649,null,3,1)))
答案 0 :(得分:1)
通过检查list of tuples
没有4
条目"null"
条目的元组来过滤您的RDD
yourRdd.filter({
case (id, list) => !list.exists(t => t._4.equals("null"))
})