Spark DataFrame join后移除重复的列

在Spark,两个DataFrame做join操作后,会出现重复的列。有两种方法可以用来移除重复的列。

方法一:join表达式使用字符串数组(用于join的列)

df1.join(df2, Seq("id","name"),"left")

这里DataFrame df1和df2使用了id和name两列来做join,返回的结果会对这两列去重。

join的第三个参数为join的类型:left,right,inner,fullouter。

方法二:使用select返回指定的列

DataFrame.join操作类似于SQL语句,可以使用select指定返回的列:

val dfa  = Seq(("a", 1), ("b", 2)).toDF("key", "vala")
val dfb  = Seq(("a", 1)).toDF("key", "valb")
dfa.join(dfb, dfa("key") === dfb("key")).select(dfa("id"), dfb("valb")")

版权声明:著作权归作者所有。

相关推荐

CSS让绝对定位的元素居中的办法

水平居中,设置left:0,right:0, 垂直居中,设置top:0,bottom:0。margin设置为auto<!DOCTYPE html> <html lang="en"> <head> <title>SO question 2803532</title> <style type="text/css

JavaScript删除数组里重复的元素

JavaScript里有多种方法可以用来对数组元素去重。ES6 SetES6提供了一个Set对象,用它可以很简单便可以对数组元素去重。function uniq(arr) {    return Array.from(new Set(arr)); } filter另外也可以通过filter来对数组元素去重。functi

Linux批量删除正则匹配的的文件

1、使用find查找匹配的文件find ./ -regex .*\.gz 注意前面的‘.*’,表示查找到的文件带有目录2、使用xargs 传递文件列表参数给rmfind ./ -regex .*\.gz|xargs rm -rf 使用``代替|xargs 管道传递参数rm -rf 

MySQL删除重复的行,保留其中一行

示例有这样一个表CREATE TABLE `tests` (  `id` int(11) DEFAULT NULL,  `name` varchar(20) DEFAULT NULL ) ; 现在需要删除重复name的行,但保留其中一行。方法一:保留id小的一行DELETE n1