Scala 如何与hashmap相比从dataframe中选取行
我有两个数据帧 df1 df2 哈希映射Scala 如何与hashmap相比从dataframe中选取行,scala,hashmap,apache-spark-sql,Scala,Hashmap,Apache Spark Sql,我有两个数据帧 df1 df2 哈希映射 Map(351608084643945 -> List(1544497916,1544497916), 351608084643944 -> List(1544498103,1544498093)) 我想比较列表中的值,如果列表中的两个值匹配,那么我想从该id的dataframe(df1)获得完整的行。 否则,该id的df2的整行 数据帧和映射都将具有不同且唯一的id。如果我理解正确,您希望遍历哈希映射,并且对于条目,您希望检查列表中的
Map(351608084643945 -> List(1544497916,1544497916), 351608084643944 -> List(1544498103,1544498093))
我想比较列表中的值,如果列表中的两个值匹配,那么我想从该id的dataframe(df1)获得完整的行。
否则,该id的df2的整行
数据帧和映射都将具有不同且唯一的id。如果我理解正确,您希望遍历哈希映射,并且对于条目,您希望检查列表中的值是否具有所有相同的值。若列表中的元素和您希望从df1获取数据的元素相同,那个么就从df2获取该键的数据。如果这是你想要的,下面是相同的代码
hashMap.foreach(x => {
var key = x._1.toString
var valueElements = x._2.toList
if (valueElements.forall(_ == valueElements.head)) {
df1.filter($"id".equalTo(key))
} else {
df2.filter($"id".equalTo(key))
}
})
两个步骤:
Map(351608084643945 -> List(1544497916,1544497916), 351608084643944 -> List(1544498103,1544498093))
hashMap.foreach(x => {
var key = x._1.toString
var valueElements = x._2.toList
if (valueElements.forall(_ == valueElements.head)) {
df1.filter($"id".equalTo(key))
} else {
df2.filter($"id".equalTo(key))
}
})