有两个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列匹配。
答案 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 :_*)
希望这有帮助!