繁体   English   中英

如何比较 Databricks 中的 2 个 Spark 数据帧

[英]How do I Compare 2 Spark Dataframes in Databricks

我有以下火花数据框。 一个来自文本文件,另一个来自 Databricks 中的 Spark 表:

尽管数据完全相同,但以下代码报告了差异。 我希望 df3 为空:

table_df = spark.sql("select * from db.table1")
file_df = spark.read.format("csv").load("my_file.txt", header = False, delimiter = '|')
file_df = file_df.toPandas()
table_df = table_df.toPandas()
df3=table_df.eq(file_df)
print(df3.shape[0])
  • 我需要在比较之前订购数据吗? - 如果是这样,我该怎么做?
  • 我看不到上面的连接是在哪里完成的。 它将如何匹配行? [ID] 和 [Account] 是主键吗?
  • 以上是比较2个数据帧的最佳方法吗?

这是数据 - 其中 [ID] 和 [Account] 是主键

在此处输入图像描述

我通常用来比较两个 dataframe 的方法是使用内部连接并查看计数是否匹配,或者使用subtract查看它们之间是否有任何不同

df1 = create_df(
    data=[
        ('Avery Bradley', 25.0, 7730337.0),
        ('Jae Crowder', 25.0, 6796117.0),
    ],
    schema = ['name', 'age', 'salary']
)
+-------------+----+---------+
|         name| age|   salary|
+-------------+----+---------+
|Avery Bradley|25.0|7730337.0| <<< 25
|  Jae Crowder|25.0|6796117.0|
+-------------+----+---------+

df2 = create_df(
    data=[
        ('Avery Bradley', 24.0, 7730337.0),
        ('Jae Crowder', 25.0, 6796117.0),
    ],
    schema = ['name', 'age', 'salary']
)
+-------------+----+---------+
|         name| age|   salary|
+-------------+----+---------+
|Avery Bradley|24.0|7730337.0| <<< 24
|  Jae Crowder|25.0|6796117.0|
+-------------+----+---------+

# Solution #1
df1.subtract(df2).show()
+-------------+----+---------+
|         name| age|   salary|
+-------------+----+---------+
|Avery Bradley|25.0|7730337.0|
+-------------+----+---------+

# Solution #2
df1.join(df2, on=df1.columns).count()
# 1 <<< while df1.count() = 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM