我们如何使用Scala在spark中添加列值?

时间:2019-03-31 06:51:13

标签: scala apache-spark

我有这样的数据

+-------------+--------+--------+
|         COl1|    Col2|    COL3|
+-------------+--------+--------+
|A .......... |   56102|   45991|
|B........... |   25336|   23099|
+-------------+--------+--------+

应该是这样

+-------------+--------+--------+
|         COl1|    Col2|    COL3|
+-------------+--------+--------+
|A .......... |   56102|   45991|
|B........... |   25336|   23099|
|Total....... |   58368|   69090|
+-------------+--------+--------+

需要在行中添加Total,并且该值应为数据帧中扩孔行的总和。

1 个答案:

答案 0 :(得分:2)

您可以使用聚合函数来计算总和,并可以使用并集将其附加到原始df的末尾。为了使其正常工作,您只需要确保各列的名称重合即可。

它会像这样:

val df = Seq(("A", 56102, 45991), ("B",  25336, 23099))
    .toDF("COL1", "COL2", "COL3")

val sums = df.select(lit("Total") as "COL1", sum('COL2) as "COL2", sum('COL3) as "COL3")
df.union(sums).show()
+-----+-----+-----+
| COL1| COL2| COL3|
+-----+-----+-----+
|    A|56102|45991|
|    B|25336|23099|
|Total|81438|69090|
+-----+-----+-----+