【问题标题】:Spark scala : select column name from other dataframeSpark scala:从其他数据框中选择列名
【发布时间】:2018-08-08 11:38:06
【问题描述】:

有两个 json,第一个 json 有更多的列,并且总是超集。

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

操作除外:

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

问题:

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

【问题讨论】:

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


    【解决方案1】:

    对于问题: 如何从 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 :_*)
    

    希望这会有所帮助!

    【讨论】:

    • 它按预期工作,非常感谢您的回复
    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多