我有两个dataframes df1和df2。我的任务是选择存在的数据仅在DF1中,但在DF2中不存在。可以帮忙吗?我正在使用Spark 1.6外壳。
您可以使用以下方式:
val dfResult = df1.except(df2)
请注意,两个数据范围需要具有相同的结构(相同的列)
在Spark 2.0中,您可以进行ANTI JOIN
。假设您的记录由CONCON id
识别:
val dfResult = df1.join(df2, Seq("id"), "leftanti")
spark提供几种连接类型,其中 leftSemi 您可以使用,这类似于内在的差异差异,weftsemi join joins返回了左数据集的所有列,而忽略了所有列右数据集的所有列。
您可以尝试使用LeftSemi加入类型的Scala中的以下操作来加入Spark DataFrame。
empDF.join(deptDF,empDF("emp_dept_id") === deptDF("dept_id"),"leftsemi")
.show(false)
用于python使用以下pyspark SQL使用lewsemi
加入dataframe示例empDF.join(deptDF,empDF.emp_dept_id == deptDF.dept_id,"leftsemi")
.show(truncate=False)
另外,您也可以使用 left_semi
怎么样.. dataframe1.as("d1").join(dataframe2.as("d2"), $"d1.col1" === $"d2.col1").select($"d1.*")
其中col1是要加入的列。