我正在尝试运行一些测试。即
assertDataFrameEquals(etalon, agg)
在 2 个数据帧上。但是得到如下错误
ScalaTestFailureLocation
Expected StructField(value1,ArrayType(StringType,true),false)
Actual StructField(value2,ArrayType(StringType,true),true)
一个df是从一个列表创建的
val etalon= spark.sparkContext.parallelize(data).toDF()
另一个是从一些输入文件中计算出来的。
如果 value2 是字符串或其他类似类型,我可以这样做
etalon.na.fill()
就可以了。但这不适用于数组。我还能做什么?
最佳答案
尝试下面的代码片段,这里将 agg 数据帧的架构应用于 etalon 数据帧,以便它们的架构保持一致。
var etalon = spark.sparkContext.parallelize(data).toDF()
val newSchema = agg.schema
etalon = spark.createDataFrame(etalon.rdd, newSchema)
assertDataFrameEquals(etalon, agg)
关于arrays - ScalaTestFailureLocation 预期的 StructField(value1,ArrayType(StringType,true),false) 实际的 StructField(val2,ArrayType(StringType,true),true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224291/