Как сделать сумму столбцов и сделать ее доступной как столбец в Spark SQL

Возможно, стоит добавить, что для объектов-оболочек для примитивных типов - то есть 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.");
-1
задан BigD 15 January 2019 в 17:19
поделиться

1 ответ

Вы можете сделать это следующим образом:

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|
+--------+---+-------+-------+

Надеюсь, это поможет вам.

0
ответ дан Md Shihab Uddin 15 January 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: