【问题标题】:Scala - Drop records from DF1 if it has matching data with column from DF2 [duplicate]Scala - 如果 DF1 中的数据与 DF2 中的列匹配,则从 DF1 中删除记录 [重复]
【发布时间】:2018-05-03 10:53:35
【问题描述】:

我有两个 DF(railroadGreaterFilerailroadInputFile)。

如果railroadGreaterFile 中的MEMBER_NUM 列中的数据与railroadInputFileMEMBER_NUM 列中的数据匹配,我想从railroadGreaterFile 中删除记录

以下是我使用的:

val columnrailroadInputFile = railroadInputFile.withColumn("check", lit("check"))
val railroadGreaterNotInput = railroadGreaterFile
                               .join(columnrailroadInputFile, Seq("MEMBER_NUM"), "left")
                               .filter($"check".isNull)
                               .drop($"check")

执行上述操作,记录被删除,但是我看到railroadGreaterNotInput 的架构是我的DF1DF2 的组合,所以当我尝试将railroadGreaterNotInput 的数据写入文件时,它给了我下面错误

org.apache.spark.sql.AnalysisException: Reference 'GROUP_NUM' is ambiguous, could be: GROUP_NUM#508, GROUP_NUM#72

我应该怎么做才能使railroadGreaterNotInput 只包含来自railroadGreaterFile DF 的字段?

【问题讨论】:

  • 您可以从 railroadInputFile 重命名冲突的列名,并且只有在加入它们后才选择 railroadGreaterFile 数据框列

标签: scala apache-spark


【解决方案1】:

加入时只能选择MEMBER_NUM

val columnrailroadInputFile = railroadInputFile.withColumn("check", lit("check"))
val railroadGreaterNotInput = railroadGreaterFile.join(
    columnrailroadInputFile.select("MEMBER_NUM", "check"), Seq("MEMBER_NUM"), "left")
   .filter($"check".isNull).drop($"check")

或将columnrailroadInputFile中的所有列删除为

columnrailroadInputFile.drop(columnrailroadInputFile.columns :_*)

但是对于这个使用join contition as

columnrailroadInputFile("MEMBER_NUM") === railroadInputFile("MEMBER_NUM")

希望这会有所帮助!

【讨论】:

  • 我快到了,现在我的第一列是 MEMBER_NUM,然后是其余列,有没有办法可以交换 railroadGreaterNotInput 中的第一列和第二列?
  • 我不确定,交换第一列和第二列是什么意思。
  • railroadInputFile 的架构是 GROUP_NUM, MEMBER_NUM, .... railroadGreaterFile 的架构是 GROUP_NUM, MEMBER_NUM, .... 最终的 DF railroadGreaterNotInput 的 Schema 显示 MEMBER_NUM, GROUP_NUM.... 我想要最终的 DF与我的 DF1 和 DF2 同步。
  • 你想交换 GROUP_NUMMEMBER_NUM 吗?为什么要这样做?
  • 你只需要使用 select("fields in order ")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 2021-03-28
相关资源
最近更新 更多