2017-08-08 50 views
0

Spark RDD包含两个字段F1和F2,并通过运行SQL查询来填充。检查RDD中的字段是否包含唯一值

F1必须是唯一的,而F2没有这个约束。实际上,F2和F1之间有一对多的关系。一个F2值可以与几个F1值相关联,但不是相反的方式。

使用Scala,什么是最简单的函数式编程结构,用于对RDD进行检查,以确保从SQL返回的数据不违反此约束。

感谢

+0

行我希望你的RDD很小:D'rdd.groupBy(_._ 1).count == rdd.count' – philantrovert

回答

2

如果这是从SQL查询比这个人口一定是一个数据帧,比你可以简单地通过使用

df.select("order").distinct().count() == df.count() 

如果你已经转换到RDD比你可以直接使用验证此在@pphilantrovert建议

df.groupBy(_._1).count == df.count 

注:这是一个昂贵的任务,如果数据集较大

希望这有助于!

+0

谢谢。使用DataFrame时,如何找到不唯一的特定条目? – user1052610

+0

您可以按顺序分组,然后对订单进行计数,然后筛选出计数是否小于2,剩下的得分不是唯一的。 –

1

如果您打算使用RDD(不是DataFrames),那么使用下面的代码片段可以方便您使用。比方说,你RDD是inputRDD有2场第一个将被用作关键第二的值:

inputRDD.countByKey.filter(_._2 > 1) 

在没有重复的情况下,它应该返回空Map()否则地图包括重复键(第一场)

相关问题