Как преобразовать несколько фреймов данных Spark в набор данных [Map [String, Array]]? - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно взять карту [String, DataFrame] и преобразовать ее в набор данных [Map [String, Array]]

val map_of_df = Map(
 "df1"->sc.parallelize(1 to 4).map(i => (i,i*1000)).toDF("id","x").repartition(4)
,"df2"->sc.parallelize(1 to 4).map(i => (i,i*100)).toDF("id","y").repartition(4)
)

//map_of_df: scala.collection.immutable.Map[String,org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]] = Map(df1 -> [id: int, x: int], df2 -> [id: int, y: int])

//magic here, I need a type of org.apache.spark.sql.Dataset[Map[String, Array[org.apache.spark.sql.Row]]] with four partitions
//where the keys to the map are "df1" and "df2"

1 Ответ

0 голосов
/ 19 сентября 2019

Вы просто collect все кадры данных:

map_of_df
      .mapValues(_.collect())
      .toSeq
      .toDS

Имейте в виду, что это не будет масштабироваться - все данные будут загружены в память драйвера.Другими словами, для этого вам не нужна Spark.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...