首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新来自两个数据框架的数据Scala-Spark

更新来自两个数据框架的数据Scala-Spark
EN

Stack Overflow用户
提问于 2018-07-06 11:40:54
回答 1查看 34关注 0票数 0

我有两个数据帧:

代码语言:javascript
复制
DF1:
    ID | Col1 | Col2
    1    a      aa 
    2    b      bb
    3    c      cc

DF2:
    ID | Col1 | Col2
    1    ab      aa 
    2    b       bba
    4    d       dd

我如何加入这两个外勤部,结果应该是:

代码语言:javascript
复制
Result:
        1    ab      aa 
        2    b       bba
        3    c       cc
        4    d       dd

我的代码是:

代码语言:javascript
复制
val df = DF1.join(DF2, Seq("ID"), "outer")
        .select($"ID",
          when(DF1("Col1").isNull, lit(0)).otherwise(DF1("Col1")).as("Col1"),
          when(DF1("Col2").isNull, lit(0)).otherwise(DF2("Col2")).as("Col2"))
            .orderBy("ID")

它可以工作,但我不想指定每一列,因为我有大型文件。那么,在不指定每一列的情况下,是否有任何方法来更新dataframe (如果在第二个DF中添加了一些新的)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-06 12:05:05

一个简单的leftantidf1df2连接起来,并将结果合并到df2中,应该得到您想要的输出如下

代码语言:javascript
复制
df2.union(df1.join(df2, Seq("ID"), "leftanti")).orderBy("ID").show(false)

这应该会给你

代码语言:javascript
复制
+---+----+----+
|ID |Col1|Col2|
+---+----+----+
|1  |ab  |aa  |
|2  |b   |bba |
|3  |c   |cc  |
|4  |d   |dd  |
+---+----+----+

解决方案与代码中的逻辑不匹配,但会生成预期的结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51209665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档