Ich habe einige Probleme mit groupByKey
in Scala und Spark. Ich habe 2 Fallklassen:Wert mit groupByKey hinzufügen
case class Employee(id_employee: Long, name_emp: String, salary: String)
Im Moment ich diese zweite Fall-Klasse verwenden:
case class Company(id_company: Long, employee:Seq[Employee])
Allerdings mag ich es mit diesem neuen ersetzen:
case class Company(id_company: Long, name_comp: String employee:Seq[Employee])
Es gibt ein übergeordnetes DataSet (df1), das ich mit groupByKey
verwende, um Company
Objekte zu erstellen:
val companies = df1.groupByKey(v => v.id_company)
.mapGroups(
{
case(k,iter) => Company(k, iter.map(x => Employee(x.id_employee, x.name_emp, x.salary)).toSeq)
}
).collect()
Dieser Code funktioniert, es gibt Objekte wie dieses:
Company(1234,List(Employee(0987, John, 30000),Employee(4567, Bob, 50000)))
Aber ich finde nicht die Spitze der Gesellschaft name_comp auf diese Objekte hinzuzufügen (dieses Feld existiert df1). Um Objekte wie folgt aus (mit dem neuen Fall-Klasse) abzurufen:
Company(1234, NYTimes, List(Employee(0987, John, 30000),Employee(4567, Bob, 50000)))
nicht für's Sie als ein Feld/Attribut in jedem Ihrer Fallklassen name_comp' – Tanjin
@Tanjin ich meinen Beitrag aktualisieren :) Für den Moment, als ich muss diese Fallklasse verwenden, aber ich möchte diese One ersetzen durch: Fallklasse Firma (id_company: Long, namp_comp: String Mitarbeiter: Seq [Mitarbeiter]) –
Können Sie angeben, was der Typ für 'df1' ist? Es scheint, als sollte es 'Dataset [Company]' sein, aber das bedeutet, dass der Code nicht einmal kompiliert werden sollte ... Eine Klarstellung würde helfen. – Tanjin