首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Scala中检查两个Spark DataFrames是否相等

在Scala中检查两个Spark DataFrames是否相等
EN

Stack Overflow用户
提问于 2016-11-09 06:38:35
回答 2查看 11.5K关注 0票数 4

我是Scala的新手,在编写单元测试时遇到了问题。

我正在尝试在Scala中比较和检查两个Spark DataFrames单元测试的相等性,并意识到没有简单的方法来检查两个Spark DataFrames的相等性。

相当于C++的代码为(假设DataFrames在C++中表示为双精度数组):

代码语言:javascript
复制
    int expected[10][2];
    int result[10][2];
    for (int row = 0; row < 10; row++) {
        for (int col = 0; col < 2; col++) {
            if (expected[row][col] != result[row][col]) return false;
        }
    }

实际的测试将涉及基于DataFrames列的数据类型的相等性测试(使用浮点数的精度、容差等进行测试)。

似乎没有一种简单的方法可以使用Scala迭代遍历DataFrames中的所有元素,而其他用于检查两个DataFrames的相等性的解决方案(如df1.except(df2) )在我的例子中不起作用,因为我需要能够提供对测试相等性的支持,以及对浮点数和双精度浮点数的容差。

当然,我可以尝试事前对所有元素进行四舍五入,然后比较结果,但我想看看是否有其他解决方案允许我遍历DataFrames以检查是否相等。

EN

回答 2

Stack Overflow用户

发布于 2017-11-14 16:58:11

代码语言:javascript
复制
import org.scalatest.{BeforeAndAfterAll, FeatureSpec, Matchers}

outDf.collect() should contain theSameElementsAs (dfComparable.collect())
# or ( obs order matters ! )

// outDf.except(dfComparable).toDF().count should be(0)
outDf.except(dfComparable).count should be(0)   
票数 7
EN

Stack Overflow用户

发布于 2016-11-09 14:32:43

如果您想检查两个数据帧是否相等,可以使用数据帧的subtract()方法( 1.3及以上版本支持)

您可以检查两个数据帧的diff是否为空或0。例如df1.subtract(df2).count() == 0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40497639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档