Spark Union 与使用 lit in spark 添加列
Posted
技术标签:
【中文标题】Spark Union 与使用 lit in spark 添加列【英文标题】:Spark Union vs adding columns using lit in spark 【发布时间】:2021-01-21 01:24:12 【问题描述】:这是一个火花相关的问题。我必须将静态数据添加到各种类型的记录中,每种类型的记录都作为不同的数据帧处理(比如 df1、df2、.. df6) 我打算添加的静态数据必须与所有 6 个数据帧重复。
什么是更高效的方式:
-
对于 6 个数据帧中的每一个,使用:
.witColumn("testA", lit("somethingA"))
.witColumn("testB", lit("somethingB"))
.witColumn("testC", lit("somethingC"))
或
-
创建一个新的 DF,比如 staticDF,其中包含我打算附加到 6 个数据帧中的每一个的所有列并使用联合?
或
还有其他我没有考虑过的选择吗?
【问题讨论】:
【参考方案1】:第一种方法是正确的。第二种方法行不通,因为联合将行添加到数据框,而不是列。
另一种方法是使用select
同时选择所有新列:
df2 = df.select(
'*',
lit('somethingA').alias('testA'),
lit('somethingB').alias('testB'),
lit('somethingC').alias('testC')
)
【讨论】:
您如何看待仅包含文字值的广播数据帧的连接? @mike 我猜它最终会对此进行优化......但我想对于这个微不足道的操作来说性能并不是什么大问题以上是关于Spark Union 与使用 lit in spark 添加列的主要内容,如果未能解决你的问题,请参考以下文章