Обработка повторяющихся данных в фреймах данных / наборах данных Spark - PullRequest
0 голосов
/ 30 января 2020

Я новичок в Spark и Scala, и даже после прочтения различных документов я все еще не могу найти лучший способ решить проблему.

У меня достаточно большой набор данных (~ ТБ), который можно загрузить в кадр данных следующим образом:

  1. 1 миллион строк

  2. Столбцы time, data, Info1, Info2.

  3. За исключением time, который является поплавком, все остальные являются массивами поплавков размером ~ 200K.

  4. Info1 и Info2 идентичны для всех строк.

  5. Похоже, что общие переменные (такие как переменные широковещания) не могут быть доступны с помощью фреймов данных / наборов данных.

  6. Строки могут быть классами падежей, но они не могут иметь стандартные c переменные / сопутствующие объекты в Spark.

  7. Строки не могут быть обычными классами.

  8. Похоже, что только выход имеет избыточность с info1 и info2 одинаковыми во всех столбцах, но в таких случаях это кажется ужасно дорогим.

  9. Использование crossJoin может иметь слишком большие расходы на связь.

Буду признателен за любые входные данные при представлении данных в Spark.

TIA.

1 Ответ

1 голос
/ 30 января 2020

Ниже приведено одно из самых простых решений, в котором добавляется новый столбец с константой:

val arr = Array(12.223F, 12.1F, 213.21F)
val df1 = df2.withColumn("info", lit(arr))
...