我有两个将List作为列的数据帧。除了列表的顺序在数据帧中不同之外,两个数据帧都是相同的
例如。架构:( id文本,名称列表'<'text>)
df1:(5,WrappedArray(abc,pqr,xyz))
df2:(5,WrappedArray(abc,xyz,pqr))
当我使用相交时,我不会在结果中获得此记录。我怎样才能得到这些记录的交集?
答案 0 :(得分:0)
我认为你是对的,最简单的方法是对列表列进行排序。
val sortListFunc = udf((inputList: WrappedArray[String]) => {
inputList.sorted
})
val df1Sorted = df1
.withColumn("name_sorted",sortListFunc(col("name"))
.select($"id","name_sorted".as("name"))
val df2Sorted = df2
.withColumn("name_sorted",sortListFunc(col("name"))
.select($"id","name_sorted".as("name"))
然后你应该能够加入或交叉。