Spark sql实战

您所在的位置:网站首页 怎么判断两列数据一模一样的函数是否正确 Spark sql实战

Spark sql实战

2024-07-11 18:59:57| 来源: 网络整理| 查看: 265

说明

Spark并没有提供比较两个dataframe是否相等的函数,所以,需要通过现有的函数来完成任务。但不同方式的性能有很大不同。 这里提供4种方式来比较两个Dataframe是否相等,可以根据不同的场景来选择使用。

实现方案

对于小的dataframe,可以直接collect回来,然后比较。

(1)先检查表结构是否相等;(2)确保df1,df2,df3没有重复行 ,使用intersect,并查看其count数是否和df的count数相等

使用subtract函数

可以通过subtract函数来计算两个df的不同数据行,若没有不同数据行,则表示这两个df是相等的。代码如下:

df1 = spark.range(100) df2 = spark.range(100) df3 = spark.range(23) assert df1.subtract(df2).count() == df2.subtract(df1).count() == 0

这种方式的代价会比较大,但不受df中数据行顺序的限制。其实这里,若不关心是否有重复的行,可以把groupBy运算去掉。

使用subtract函数+take()

这种方法是3的变种,其实我们可以不用计算所有不同数据行的总行数,其实只要有一行就是不同的,根据这个思路,我们可以使用take:

# 比较两个df是否相等的函数: # 1.比较schema 2.比较数据行 # def match_df(df1, df2): # 1.比较schema # todo: # 2.比较数据 count1 = len(df1.subtract(df2).take(1)) count2 = len(df2.subtract(df1).take(1)) return True if count1 == count2 and count1 == 0 else False # 使用函数 df1 = spark.range(100) df2 = spark.range(100) df3 = spark.range(23) r = match_df(df1, df2) print r # 输出:True r = match_df(df1, df3) print r # 输出:False

通过take来替代了count(),可以使得效率得到提高。

小结

本文提供了如何比较dataframe的几种方法,可以根据实际情况选择使用。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭