Spark scala:从其他数据框

时间:2018-02-28 14:40:55

标签: scala apache-spark dataframe hadoop apache-spark-sql

有两个json和第一个json有更多列,并且总是超级设置。

val df1 = spark.read.json(sqoopJson)
val df2 = spark.read.json(kafkaJson)

操作除外:

我喜欢在df1和df2上应用除了操作,但是df1有10列而df2只有8列。 如果我手动从df1中删除2列,那么除了将工作。但我有50多个表/ json,需要对所有50个表/ json进行EXCEPT。

问题:

如何仅从DF1中选择DF2(8)列中可用的列并创建新的df3?所以df3将有来自df1的数据,列数有限,它将与df2列匹配。

1 个答案:

答案 0 :(得分:4)

问题: 如何仅从DF1中选择DF2(8)列中可用的列并创建新的df3?

//Get the 8 column names from df2 
val columns = df2.schema.fieldNames.map(col(_))

//select only the columns from df2 
val df3 = df1.select(columns :_*)

希望这有帮助!