如何将数据框插入到具有不同架构的另一个数据框中?

时间:2017-03-14 05:19:32

标签: sql scala apache-spark dataframe

数据帧A和B有不同的Schema,我想在A到B中插入行。

环境是Spark 1.6,因此当两个数据帧具有相同顺序的相同列时,可以使用unionAll函数。

A的架构:

root
  |--a
  |--b

B的架构:

root
  |--a
  |--b
  |--c
  |--d
  |  |--d_1
  |  |--d_2
  |  |--d_3

我需要插入列" a"和" b"到datafrane B并将其他栏留空。

1 个答案:

答案 0 :(得分:0)

假设 a b 列对是唯一的,您可以外部加入DataFrame。

B.join(A, usingColumns = Seq("a", "b"), "outer")

如果不是,您可以附加一个唯一的列,然后执行外连接

import org.apache.spark.sql.functions._

B.withColumn("id", lit(2)).join(A.withColumn("id", lit(1)), usingColumns = Seq("id"), "outer")