Scala—如果DF1中有与DF2中的列匹配的数据,则从DF1中删除记录
我有两个DF(Scala—如果DF1中有与DF2中的列匹配的数据,则从DF1中删除记录,scala,apache-spark,Scala,Apache Spark,我有两个DF(railroadGreaterFile,railroadInputFile) 如果railroadGreaterFile中的MEMBER\u NUM列中的数据与railroadInputFile中的MEMBER\u NUM列中的数据匹配,我想从railroadGreaterFile中删除记录 下面是我使用的: val columnrailroadInputFile = railroadInputFile.withColumn("check", lit("check")) val r
railroadGreaterFile
,railroadInputFile
)
如果railroadGreaterFile
中的MEMBER\u NUM
列中的数据与railroadInputFile
中的MEMBER\u NUM
列中的数据匹配,我想从railroadGreaterFile
中删除记录
下面是我使用的:
val columnrailroadInputFile = railroadInputFile.withColumn("check", lit("check"))
val railroadGreaterNotInput = railroadGreaterFile
.join(columnrailroadInputFile, Seq("MEMBER_NUM"), "left")
.filter($"check".isNull)
.drop($"check")
执行上述操作时,记录被删除,但我看到railroadGreaterNotInput
的模式是我的DF1
和DF2
的组合,因此当我尝试将railroadGreaterNotInput
的数据写入文件时,它给出了以下错误
org.apache.spark.sql.AnalysisException: Reference 'GROUP_NUM' is ambiguous, could be: GROUP_NUM#508, GROUP_NUM#72
我应该怎么做才能使
railroadGreaterNotInput
只包含railroadGreaterFile
DF中的字段?加入时,您只能选择成员数量
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 :_*)
但对于此用途,请将contion作为
columnrailroadInputFile(“成员数量”)==railroadInputFile(“成员数量”)
希望这有帮助 您可以从railroadInputFile重命名冲突的列名,只需在加入后选择railroadGreaterFile dataframe columns我就快到了,现在我的第一列是MEMBER_NUM,后面是其他列,有没有办法在railroadGreaterNotInput中交换第一列和第二列?我不确定,交换第一列和第二列是什么意思?railroadInputFile的架构是GROUP_NUM、MEMBER_NUM、。。。。railroadGreaterFile的架构为组\u NUM、成员\u NUM。。。。最后一个DF railroadGreaterNotInput的模式显示成员数、组数。。。。我希望最终的DF与我的DF1和DF2同步。您想交换
组数
和成员数
吗?为什么要这样做?您只需要使用select(“按所需顺序使用字段”)