Я пытаюсь сравнить, если два DataFrames имеют одинаковые элементы, и хотя единственная строка, которая имеет оба dataframes, идентична, возвращается «не равно»
DFa он извлекается с помощью listBuffer.toDF, DFb он извлекается с помощью файла CSV.
//Things I´ve tried
assert(DFa.collect().head === DFb.collect().head)
//Returns -> [111,222,333] did not equal [111,222,333]
assert(DFa.collect() sameElements DFb.collect())
//Returns -> scala.this.Predef.refArrayOps[org.apache.spark.sql.Row](DFa.collect()).sameElements[org.apache.spark.sql.Row](scala.this.Predef.wrapRefArray[org.apache.spark.sql.Row](DFb.collect())) was false
assert(DFa.collect().toList sameElements DFb.collect().toList)
//Returns -> scala.this.Predef.refArrayOps[org.apache.spark.sql.Row](DFa.collect()).toList.sameElements[org.apache.spark.sql.Row](scala.this.Predef.refArrayOps[org.apache.spark.sql.Row](DFb.collect()).toList) was false
//Tried with toSeq as well, and with ".deep" using "==" and same errors
Я не понимаю, в чём дело, содержимое одинаковое, они одинакового типа и длины во всех примерах, кроме собираемого, где в DFa я получаю refArrayOps, а в DFb я получаю "wrapRefArray"
Единственный обходной путь, который я нашел, был:
val List1= new ListBuffer[String]
val List2= new ListBuffer[String]
DFa.foreach(row => List1+= row.toString)
DFb.foreach(row => List2 += row.toString)
assert(List1 == List2)
Но я не думаю, что это лучшее решение, а также у меня есть другой тест, который выполняет те же "sameElements" и успешно работает.