Scala Spark collect_list () против array () - PullRequest
0 голосов
/ 24 апреля 2019

В чем разница между collect_list() и array() в искре с использованием scala?

Я вижу использование повсеместно, и варианты использования неясны для меня, чтобы определить разницу.

1 Ответ

7 голосов
/ 24 апреля 2019

Несмотря на то, что оба параметра array и collect_list возвращают столбец ArrayType, оба метода сильно различаются.

Метод array объединяет «по столбцам» количество столбцов в массиве, тогда как collect_list объединяет «по строкам» в одном столбце, как правило, по группе (или Window разделению) вмассив, как показано ниже:

import org.apache.spark.sql.functions._
import spark.implicits._

val df = Seq(
  (1, "a", "b"),
  (1, "c", "d"),
  (2, "e", "f")
).toDF("c1", "c2", "c3")

df.
  withColumn("arr", array("c2", "c3")).
  show
// +---+---+---+------+
// | c1| c2| c3|   arr|
// +---+---+---+------+
// |  1|  a|  b|[a, b]|
// |  1|  c|  d|[c, d]|
// |  2|  e|  f|[e, f]|
// +---+---+---+------+

df.
  groupBy("c1").agg(collect_list("c2")).
  show
// +---+----------------+
// | c1|collect_list(c2)|
// +---+----------------+
// |  1|          [a, c]|
// |  2|             [e]|
// +---+----------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...