Spark RDD包含两个字段F1和F2,并通过运行SQL查询来填充。
F1必须是唯一的,而F2没有该约束。实际上,F2和F1之间存在一对多的关系。一个F2值可以与几个F1值相关联,但不是相反。
使用Scala,最简单的函数编程结构用于对RDD检查从SQL返回的数据是否违反此约束。
由于
答案 0 :(得分:2)
如果这是从sql查询填充的,那么这必须是一个数据帧,而不是你可以通过使用
来验证这一点。df.select("order").distinct().count() == df.count()
如果您已转换为rdd,则可以使用@pphilantrovert建议
df.groupBy(_._1).count == df.count
注意:如果数据集很大,这是一项昂贵的任务
希望这有帮助!
答案 1 :(得分:1)
如果您打算使用RDD(而不是DataFrames),那么使用下面的代码段进行操作对您来说非常方便。让我们说你的RDD是inputRDD
,首先将2个字段用作关键的第二个作为值:
inputRDD.countByKey.filter(_._2 > 1 )
如果没有重复,它应返回空Map()
否则返回包含重复键的行(第一个字段)