我的数据集上有以下场景。我需要对一些列值求和,而不会对其他列造成任何干扰。例如
这是我的数据集
data_set,vol,channel
Dak,10,ABC
Fak,20,CNN
Mok,10,BBC
我的预期输出是
data_set,vol,channel,sum(vol)
Dak,10,ABC,40
Fak,20,CNN,40
Mok,10,BBC,40
有什么办法可以在不加入的情况下实现这一目标.. 我需要优化的结果
您可以通过以下方式执行此操作:
import org.apache.spark.sql.functions.lit
import spark.implicits._
val df = Seq(("Dak",10," ABC"),
("Fak",20,"CNN"),
("Mok",10,"BBC")).toDF("data_set","vol","channel")
val sum_df = df.withColumn("vol_sum", lit(df.groupBy().sum("vol").collect()(0).getLong(0)))
sum_df.show()
+--------+---+-------+-------+
|data_set|vol|channel|vol_sum|
+--------+---+-------+-------+
| Dak| 10| ABC| 40|
| Fak| 20| CNN| 40|
| Mok| 10| BBC| 40|
+--------+---+-------+-------+
希望它能帮助你。