Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dataframe 如何在PySpark中检查df1是否等于df2?_Dataframe_Join_Pyspark - Fatal编程技术网

Dataframe 如何在PySpark中检查df1是否等于df2?

Dataframe 如何在PySpark中检查df1是否等于df2?,dataframe,join,pyspark,Dataframe,Join,Pyspark,我想比较(相等检查)df1中的列和df2[“Column_name”]中的行 我试着用连接来比较它们,例如 df1.show() +---------+ |Data_Type| +---------+ | string| | string| | int| +---------+ df2.show() +---------+ |Data_Type| +---------+ | string| | string| | int| +---------+ 但这不起作

我想比较(相等检查)df1中的列和df2[“Column_name”]中的行

我试着用连接来比较它们,例如

df1.show()
+---------+
|Data_Type|
+---------+
|   string|
|   string|
|      int|
+---------+
df2.show()
+---------+
|Data_Type|
+---------+
|   string|
|   string|
|      int|
+---------+
但这不起作用,因为我在“Data_Type”列下有重复的值,并且在按如下方式加入后,我得到了一种类似于叉积的输出:

df1.join(df2,on="Data_Type",how="left").join(df2,on="Data_Type",how="right")
if(df3.count() == df1.count() == df2.count()):
    print(True)
是否有其他方法可以对数据帧执行相等性检查?

在spark中使用
exceptAll
(保留重复项)(或)

+---------+
|Data_Type|
+---------+
|      int|
|   string|
|   string|
|   string|
|   string|
|   string|
|   string|
|   string|
|   string|
+---------+

希望你在这困难时期做得很好

在将两个数据帧转换为集合后,您可以尝试对它们进行减法。 这样,您可以将结果转换为数据帧

df1.show()
#+---------+
#|Data_Type|
#+---------+
#|   string|
#|   string|
#|      int|
#+---------+


df2.show()
#+---------+
#|Data_Type|
#+---------+
#|   string|
#|   string|
#|      int|
#+---------+

df1.exceptAll(df2).count()
df2.exceptAll(df1).count()
#0
df1.subtract(df2).count()
df2.subtract(df1).count()
#0
此外,由于我们使用集合,如果您有多个列,那么在两个数据帧中顺序并不重要

希望这有帮助

    lst = []
    for row in set(df1.collect()) - set(df2.collect()):
         lst.append(row)
    spark.createDataFrame(lst)