Не могу получить прямой ответ из сети.
Рассмотрим следующий сценарий данных:
У меня есть данные, которые содержат user_id и временные метки активности пользователя:
val bigData = Seq( ( "id3",12),
("id1",55),
("id1",59),
("id1",50),
("id2",51),
("id3",52),
("id2",53),
("id1",54),
("id2", 34)).toDF("user_id", "ts")
Итак, оригинальный DataFrame выглядит следующим образом:
+-------+---+
|user_id| ts|
+-------+---+
| id3| 12|
| id1| 55|
| id1| 59|
| id1| 50|
| id2| 51|
| id3| 52|
| id2| 53|
| id1| 54|
| id2| 34|
+-------+---+
и вот что я напишу, например, в HDFS \ S3.
Однако я не могу сохранить данные, сгруппированные пользователем, например, так:
bigData.groupBy("user_id").agg(collect_list("ts") as "ts")
Какой результат:
+-------+----------------+
|user_id| ts|
+-------+----------------+
| id3| [12, 52]|
| id1|[55, 59, 50, 54]|
| id2| [51, 53, 34]|
+-------+----------------+
Я могу получить решительный ответ о том, какой метод улучшит хранение / сжатие в файловой системе. Групповой подход выглядит (интуитивно) лучше с точки зрения хранения / сжатия.
Кто-нибудь знает, существует ли абсолютный подход или знает какие-либо критерии или статьи по этому вопросу?