Возможно, стоит добавить, что для объектов-оболочек для примитивных типов - то есть Int, Long, Double - == вернет true, если два значения равны.
Long a = 10L;
Long b = 10L;
if (a == b) {
System.out.println("Wrapped primitives behave like values");
}
Чтобы контрастировать, выше двух Longs на два отдельных ArrayLists, equals считает их одинаковыми, но == не делает.
ArrayList<Long> c = new ArrayList<>();
ArrayList<Long> d = new ArrayList<>();
c.add(a);
d.add(b);
if (c == d) System.out.println("No way!");
if (c.equals(d)) System.out.println("Yes, this is true.");
Вы можете сделать это следующим образом:
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|
+--------+---+-------+-------+
Надеюсь, это поможет вам.