PySpark检查两个DataFrame的数据是否一致

数据条数比较

可以使用 count() 方法来获取每个DataFrame的行数,若行数不同,则数据肯定不一致。示例代码如下:

python 复制代码
df1 = spark.createDataFrame([(1, 'a'), (2, 'b')], ['id', 'name'])
df2 = spark.createDataFrame([(1, 'a'), (2, 'b'), (3, 'c')], ['id', 'name'])

if df1.count()!= df2.count():
    print("两个DataFrame数据条数不一致")

数据排序后比较

先对两个DataFrame按照相同的列进行排序,再将它们转换为RDD,然后使用 zip 函数将两个RDD的元素一一对应地组合成元组,最后检查每个元组中的两个元素是否相等。示例代码如下:

python 复制代码
sorted_df1 = df1.sort('id')
sorted_df2 = df2.sort('id')

rdd1 = sorted_df1.rdd
rdd2 = sorted_df2.rdd

if all(x == y for x, y in rdd1.zip(rdd2)):
    print("两个DataFrame数据一致")
else:
    print("两个DataFrame数据不一致")

数据差值比较

使用 subtract 方法获取两个DataFrame的差值,如果差值DataFrame为空,则说明两个DataFrame数据一致。示例代码如下:

python 复制代码
diff_df1 = df1.subtract(df2)
diff_df2 = df2.subtract(df1)

if diff_df1.count() == 0 and diff_df2.count() == 0:
    print("两个DataFrame数据一致")
else:
    print("两个DataFrame数据不一致")

数据哈希值比较

计算每个DataFrame中每行数据的哈希值,然后比较两个DataFrame的哈希值集合是否相等。示例代码如下:

python 复制代码
from pyspark.sql.functions import hash

hashed_df1 = df1.select(hash(*df1.columns).alias('hash_value'))
hashed_df2 = df2.select(hash(*df2.columns).alias('hash_value'))

hash_set1 = set(hashed_df1.rdd.flatMap(lambda x: x).collect())
hash_set2 = set(hashed_df2.rdd.flatMap(lambda x: x).collect())

if hash_set1 == hash_set2:
    print("两个DataFrame数据一致")
else:
    print("两个DataFrame数据不一致")
相关推荐
数据猿31 分钟前
【金猿CIO展】如康集团CIO 赵鋆洲:数智重塑“顶牛”——如康集团如何用大数据烹饪万亿肉食产业的未来
大数据
muddjsv37 分钟前
Pandas 绘图全能手册:12 类基础图一键绘制,覆盖所有原生绘图类型
pandas
zxsz_com_cn2 小时前
设备预测性维护的意义 工业设备预测性维护是什么
大数据
程序猿零零漆3 小时前
Spring之旅 - 记录学习 Spring 框架的过程和经验(十四)SpringMVC的请求处理
学习·spring·pandas
samLi06203 小时前
【数据集】中国杰出青年名单数据集(1994-2024年)
大数据
成长之路5144 小时前
【数据集】分地市旅游收入数据集(2000-2024年)
大数据·旅游
大厂技术总监下海4 小时前
用户行为分析怎么做?ClickHouse + 嵌套数据结构,轻松处理复杂事件
大数据·数据结构·数据库
大厂技术总监下海4 小时前
大数据生态的“主动脉”:RocketMQ 如何无缝桥接 Flink、Spark 与业务系统?
大数据·开源·rocketmq
2501_933670794 小时前
2026年中专大数据专业可考取的证书
大数据
oMcLin5 小时前
如何在Ubuntu 22.04 LTS上优化PostgreSQL 14集群,提升大数据查询的响应速度与稳定性?
大数据·ubuntu·postgresql