создать фрейм данных scala из пользовательского объекта - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в скале. Я постараюсь быть максимально понятным. У меня есть следующий код:

case class Session (bf: Array[File]) 
case class File(s: s, a: Option[a], b: Option[b], c: Option[c])

case class s(s1:Int, s2:String) 
case class a(a1:Int, a2:String) 
case class b(b1:Int, b2:String)  
case class c(c1:Int, c2:String)


val x = Session(...) // some values here, many session objects grouped in a  dataset collection i.e. Dataset[Sessions]
  1. Я хочу знать, как создавать кадры данных из набора данных [сеансы]. я не буду знать, как манипулировать такой сложной структурой.
  2. как создать фрейм данных из набора данных [сессий], содержащего только пользовательский объект "а".

Спасибо

1 Ответ

0 голосов
/ 05 сентября 2018

Spark DataSet работает так же, как обычная коллекция Scala. У него есть операция toDF(), чтобы создать из него DataFrame. Теперь вам просто нужно извлечь из него нужные данные, используя различные преобразования.

  1. flatMap это в DataSet из File
  2. filter каждые File для непустых a
  3. map каждый оставшийся File до a
  4. вызов toDF() для создания DataFrame

В коде это будет:

val ds: DataSet[Session] = ...
ds.flatMap(_.bf)
  .filter(_.a.isDefined)
  .map(_.a.get)
  .toDF()

В Scala вы также можете объединить filter и map в collect, что приведет к следующему коду:

ds.flatMap(_.bf).collect({ case File(_, Some(a), _, _) => a }).toDF()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...