SPARK DATAFRAME连接 - 仅在第一个数据框中选择存在的数据



我有两个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是要加入的列。

相关内容

  • 没有找到相关文章

最新更新