【问题标题】:Spark Union vs adding columns using lit in sparkSpark Union 与使用 lit in spark 添加列
【发布时间】:2021-01-21 01:24:12
【问题描述】:

这是一个火花相关的问题。我必须将静态数据添加到各种类型的记录中,每种类型的记录都作为不同的数据帧处理(比如 df1、df2、.. df6) 我打算添加的静态数据必须与所有 6 个数据帧重复。

什么是更高效的方式:

  1. 对于 6 个数据帧中的每一个,使用:
    .witColumn("testA", lit("somethingA"))
    .witColumn("testB", lit("somethingB"))
    .witColumn("testC", lit("somethingC"))

  1. 创建一个新的 DF,比如 staticDF,其中包含我打算附加到 6 个数据帧中的每一个的所有列并使用联合?

还有其他我没有考虑过的选择吗?

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    第一种方法是正确的。第二种方法行不通,因为联合将行添加到数据框,而不是列。

    另一种方法是使用select同时选择所有新列:

    df2 = df.select(
        '*',
        lit('somethingA').alias('testA'),
        lit('somethingB').alias('testB'),
        lit('somethingC').alias('testC')
    )
    

    【讨论】:

    • 您如何看待仅包含文字值的广播数据帧的连接?
    • @mike 我猜它最终会对此进行优化......但我想对于这个微不足道的操作来说性能并不是什么大问题
    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2018-09-17
    相关资源
    最近更新 更多